我有一个巨大的数据块,我想通过在某些已识别的模式之前插入回车符来将其拆分为行。 (在这个阶段,我不想使用 Linux 拆分命令(。
所以我正在看:
- 如何识别数据块中的模式
- 如何在图案起始位置之前插入 CR。
例:
块是1234abcde56785abcde53453FEFDabcde
结果在文件中应如下所示:
1234
abcde56785
abcde53453FEFD
abcde
感谢社区!
你的模式根本不容易理解,所以下次请尝试添加一些信息:
您可以使用以下sed
命令:
echo "1234abcde5678abcde53453FEFDabcde" | sed -E 's/(abcde[0-9]*[A-Z]*)/n1/g'
1234
abcde5678
abcde53453FEFD
abcde
如果您需要有窗口EOL,请将其更改为
sed -E 's/(abcde[0-9]*[A-Z]*)/rn1/g'
有关sed
的说明:
-E
用于扩展正则表达式支持,否则您需要转义字符,例如(,),+,{,}
- 全局模式下查找和替换
s/PATTERN/REPLACEMENT/g
命令在有关正则表达式的说明:
演示
- 用于分组和回溯引用的
()
abcde[0-9]*[A-Z]*
为了匹配以abcde
开头的所有内容,然后最终匹配一些数字,最终匹配一些大写字母:
正则表达式起点:http://www.rexegg.com/regex-quickstart.html
根据您显示的输出,您不能完全确定您的要求,请您尝试以下并让我知道这是否有帮助。
awk '{gsub(/abcde/,"n&")} 1' Input_file
OR(在abcde
的情况下,字符串不会总是相同的,它可以是任何小写字母单词(
awk '{gsub(/[a-z]+/,"n&")} 1' Input_file