【问题标题】:how to replace special characters in bash如何替换bash中的特殊字符
【发布时间】:2014-03-29 03:38:46
【问题描述】:

我有两个问题。我有这样的输入

foo.o
bar.o

我需要用我选择的字符(在本例中为“D”)替换点,并且我需要在每行的末尾附加“]。

我知道如何用 awk 附加 ]

awk '{print $0"]"}' 

但我也不知道如何添加 ",我的简单尝试是

  awk '{print $0""]"}' 

但正如预期的那样不起作用。

而且我根本不知道如何替换点。

感谢您的帮助。

【问题讨论】:

    标签: bash sed awk


    【解决方案1】:

    . 是一个正则表达式元字符。把它放在一个字符类中:

    awk '{gsub("[.]", "D", $0)}{print $0"]"}'
    

    双重转义它:

    awk '{gsub("\\.", "D", $0)}{print $0"]"}'
    

    要添加引号,请将其转义。为了添加,"],说:

    print $0"\"]"
    

    【讨论】:

      【解决方案2】:

      sed:

      $ sed 'y/./D/;s/$/]/' input.txt 
      fooDo]
      barDo]
      $ 
      
      • y/./D/ 替换“.”的所有实例与“D”。 y 命令是简单的字符串替换,而不是正则表达式替换,因此 . 在此命令中不需要任何特殊转义。
      • s/$/]/ 匹配行尾并有效附加“]”。

      【讨论】:

        猜你喜欢
        • 2017-10-19
        • 2017-07-05
        • 1970-01-01
        • 2015-03-17
        • 2021-09-20
        • 2019-11-04
        • 1970-01-01
        • 2011-05-16
        • 2023-02-24
        相关资源
        最近更新 更多