我很难完成我的剧本,因为这部分并没有像我希望的那样发挥作用。
我的剧本中有这一行:
cat /home/tmp/temp1.txt | awk '{gsub("~",RS);gsub("*",RS);print}' > /home/tmp/temp.txt
工作正常,是的。 但是,当我做这样的事情时:
cat /home/tmp/temp1.txt | awk '{gsub("|",RS);print}' > /home/tmp/temp.txt
根本不工作。 我想把我所有的竖条改成新的线条,但我无法实现它。请帮我解决一下这个。感谢
答案 0 :(得分:4)
您可以在单个awk中执行所有替换:
awk '{gsub(/[*~|]/, RS)} 1' /home/tmp/temp1.txt
管道另外用于需要转义的正则表达式交替。但是,在字符类[...]
管道或星号内部不需要如上所示进行转义。
最好在/.../
函数中使用gsub
正则表达式文字,而不是引用字符串。
答案 1 :(得分:1)
如果您真的只想用竖线替换竖线,那么您可以使用翻译字符的tr
更简洁地执行此操作:
echo "hi|there|my|friend" | tr '|' '\n'
hi
there
my
friend
或者,如果您使用的是文件:
tr '|' '\n' < /home/tmp/temp.txt