我有一个巨大的单个数据块,我希望通过在某些已识别的模式之前插入回车符来分割成行。 (在这个阶段,我不想使用linux split命令)。
所以我在看:
示例:
该块为1234abcde56785abcde53453FEFDabcde
结果应该在文件中看起来像这样:
1234
abcde56785
abcde53453FEFD
abcde
感谢社区!
答案 0 :(得分:1)
您的模式根本不易理解,所以下次请尝试添加一些信息:
您可以使用以下sed
命令:
echo "1234abcde5678abcde53453FEFDabcde" | sed -E 's/(abcde[0-9]*[A-Z]*)/\n\1/g'
1234
abcde5678
abcde53453FEFD
abcde
如果您需要Windows EOL,请将其更改为
sed -E 's/(abcde[0-9]*[A-Z]*)/\r\n\1/g'
有关sed
的解释:
-E
用于扩展正则表达式支持,否则您需要转义(,),+,{,}
s/PATTERN/REPLACEMENT/g
命令以全局模式查找和替换关于正则表达式的解释:
()
用于分组和反向引用abcde[0-9]*[A-Z]*
为了匹配以abcde
开头的所有内容,最后是一些数字,最后是一些大写字母:答案 1 :(得分:1)
根据您显示的输出完全不确定您的要求,请您试试,如果有帮助请告诉我。
awk '{gsub(/abcde/,"\n&")} 1' Input_file
OR(如果abcde
字符串不一直是相同的,它可能是任何小写字母)
awk '{gsub(/[a-z]+/,"\n&")} 1' Input_file