使用Sed、awk或tr时,如何在特定字符后添加换行符?

使用Sed、awk或tr时,如何在特定字符后添加换行符?,awk,sed,tr,Awk,Sed,Tr,我有这个档案: lol.txt:hungrylol2.txt:hungry lol3.txt:hungry lol4.txt:hungry lol5.txt:hungrylol6.txt:hungry 我想把它变成这样: lol.txt:hungry lol2.txt:hungry lol3.txt:hungry lol4.txt:hungry lol5.txt:hungry lol6.txt:hungry 我已经与sed、tr和awk进行了调查,但没有找到方便的方法 谢谢试试: awk '

我有这个档案:

lol.txt:hungrylol2.txt:hungry
lol3.txt:hungry
lol4.txt:hungry
lol5.txt:hungrylol6.txt:hungry
我想把它变成这样:

lol.txt:hungry
lol2.txt:hungry
lol3.txt:hungry
lol4.txt:hungry
lol5.txt:hungry
lol6.txt:hungry
我已经与sed、tr和awk进行了调查,但没有找到方便的方法

谢谢

试试:

awk '{gsub(/hungrylol/,"hungry\nlol");print}'   Input_file

我正在用hungry然后是new line和lol全局替换字符串hungrylol,然后打印输入文件的行。

如果没有行,只需在hungry之后添加新行即可:

$ sed -r 's/(hungry)([^\n])/\1\n\2/g' file
lol.txt:hungry
lol2.txt:hungry
lol3.txt:hungry
lol4.txt:hungry
lol5.txt:hungry
lol6.txt:hungry
这与后跟不是新行的字符相匹配。当这种情况发生时,它会用饥饿+新行+捕获的角色来替换它。

使用BRE使用sed:

sed 's/\(hungry\)\(.\)/\1\n\2/' file

当饥饿后面跟一个字符时,用新行和捕获的字符输出它。

那么具体的字符是什么?在y之后,还是在l之前?请通过直接更新问题进行澄清。显示失败的解决方案尝试可能会有所帮助。