【发布时间】:2014-03-29 03:38:46
【问题描述】:
我有两个问题。我有这样的输入
foo.o
bar.o
我需要用我选择的字符(在本例中为“D”)替换点,并且我需要在每行的末尾附加“]。
我知道如何用 awk 附加 ]
awk '{print $0"]"}'
但我也不知道如何添加 ",我的简单尝试是
awk '{print $0""]"}'
但正如预期的那样不起作用。
而且我根本不知道如何替换点。
感谢您的帮助。
【问题讨论】:
我有两个问题。我有这样的输入
foo.o
bar.o
我需要用我选择的字符(在本例中为“D”)替换点,并且我需要在每行的末尾附加“]。
我知道如何用 awk 附加 ]
awk '{print $0"]"}'
但我也不知道如何添加 ",我的简单尝试是
awk '{print $0""]"}'
但正如预期的那样不起作用。
而且我根本不知道如何替换点。
感谢您的帮助。
【问题讨论】:
. 是一个正则表达式元字符。把它放在一个字符类中:
awk '{gsub("[.]", "D", $0)}{print $0"]"}'
或双重转义它:
awk '{gsub("\\.", "D", $0)}{print $0"]"}'
要添加引号,请将其转义。为了添加,"],说:
print $0"\"]"
【讨论】:
与sed:
$ sed 'y/./D/;s/$/]/' input.txt
fooDo]
barDo]
$
y/./D/ 替换“.”的所有实例与“D”。 y 命令是简单的字符串替换,而不是正则表达式替换,因此 . 在此命令中不需要任何特殊转义。s/$/]/ 匹配行尾并有效附加“]”。【讨论】: