使用awk替换两个字符串

6

我想在一个文件中将@@替换为^,将¤¤替换为换行符。为了做到这一点,我写了下面的代码,但感觉调用gawk两次并不够优雅。有没有人能告诉我是否有更优雅的解决方案?

cat test.txt | gawk '{ gsub("@@", "^"); print }' | gawk '{ gsub("¤¤", "\r\n"); print }'
2个回答

13

首先,去掉cat。除了文件串联,它毫无用处,而文件串联正是它的作用。你的awk命令应该是:

awk '{gsub("@@","^");gsub("¤¤","\r\n");print}' file

如果您想在执行上述操作之前删除所有换行符

tr -d '\r\n' <file > temp && mv temp file

如果我想在执行上述所有替换之前也删除所有换行符怎么办? - rickythefox

2

只需在打印之前两次调用gsub()。

gawk '{ gsub("@@", "^"); gsub("¤¤", "\r\n"); print }'


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接