bash - 在 Bash 中替换垂直线

标签 bash awk gsub

我很难完成我的脚本,因为这部分没有按照我想要的方式运行。

我的脚本中有这一行:

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

它根本不起作用。 我想将所有竖线更改为新线,但我无法实现。请在这件事上给予我帮助。谢谢

最佳答案

您可以像这样在一个 awk 中完成所有替换:

awk '{gsub(/[*~|]/, RS)} 1' /home/tmp/temp1.txt

管道用于需要转义的正则表达式替换。然而,在字符类 [...] 中,管道或星号不需要像上面那样进行转义。

最好在 gsub 函数中使用 /.../ 正则表达式文字而不是带引号的字符串。

关于bash - 在 Bash 中替换垂直线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32369035/

相关文章:

linux - 这个命令 ls 的作用是什么。 | xargs -i -t cp ./{} $1

linux - 脚本中奇怪的 grep 行为

将毫秒转换为天的 Bash 脚本 :Hours:Minutes:Seconds:Milliseconds

ruby-on-rails-3 - 在电子邮件正文模板上的 Rails 3 应用程序中执行多个 gsub

ruby - 我可以在 Ruby 中使用 gsub 和 Hashes 吗?

bash - 用一个空格替换 5 个点

Bash - 在 if 语句中从 crontab -l 读取

bash - 适用于 awk v4.0.2 但不适用于 >= 4.2.1 的 awk 表达式

python - awk 或 python 中的重复计数和条件筛选

r - 仅在 R 中从文本中删除单个正斜杠