regex - 如何用一个命令分别用新行和制表符替换\n 和\t?

标签 regex linux unix awk

我有一个文件名 test.sh,我想同时用它们的实际换行符和制表符替换每个 \n\t 转义字符。

猫测试.sh

Maria\nJimenez
Jose\tBaez
Lindo\nGarcia
Luis\tOvalle
Placido\nRuiz

结果输出应该是这样的:

Maria
Jimenez
Jose     Baez
Lindo
Garcia
Luis     Ovalle
Placido
Ruiz

我尝试了以下命令:

awk '{gsub(/\\n/,"\n")}1' | awk '{gsub(/\\t/,"\t")}1' test.sh 

但它不会同时替换两者。我可以只用一个命令来完成这项任务吗?

解决方案是否涉及使用 sed、perl、tr 或任何其他方法都无关紧要。

最佳答案

sed -i -e 's|\\n|\n|g' -e 's|\\t|\t|g' test.sh

sed可以在一个命令中执行多个脚本

s          # substitute
 |         # open capture block
  \\n      # match literal '\n' instead of the newline character
     |     # close capture block, open replacement block
      \n   # replace with newline character
        |  # close replacement block
         g # match multiple times per line

-i 就地编辑文件

-e 标记要执行的脚本

关于regex - 如何用一个命令分别用新行和制表符替换\n 和\t?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42585706/

相关文章:

linux - 如何设置AWS亚马逊服务器时间?找不到/etc/sysconfig/clock 文件

linux - 使用 bash 脚本使用 valgrind 检查内存

php - 如何知道一个命令已执行并完成执行另一个命令(ssh - php)

c - 使用 rio_readlineb 读取图像,但不起作用

c - 统计结构段错误

javascript - 正则表达式无法正确识别 IE 版本

python - 将行拆分为多列,仅从行中选择某些值并删除其余值

javascript - 正则表达式只允许字母、数字、点、下划线、破折号。至少 5 个字符

javascript - 单词边界与 Javascript 中的开头或结尾不匹配

unix - 在Linux中使用sed过滤html标签