如何在特定文本后添加带有sed / awk的行

时间:2016-10-06 16:41:50

标签: awk sed

我想使用sed或awk翻译此输入文件:

input
1 AA
3 BB
5 CC

output
1 AA
3 BB
3 GG
5 CC

我在此网站sed -i '/^BB:/ s/$/ GG/'文件中找到的最接近的语法,但它确实3 BB GG。我需要的是类似于vi yank,paste&正则表达式替换。 这可以用sed或awk完成吗?谢谢 兰德

4 个答案:

答案 0 :(得分:1)

使用GNU sed:

sed -r 's/^([^ ]*) BB$/&\n\1 GG/' file

输出:

1 AA
3 BB
3 GG
5 CC

答案 1 :(得分:1)

这可能适合你(GNU sed):

sed '/BB/p;s//GG/' file

如果该行包含所需的字符串,则将其替换为另一个字符串。

答案 2 :(得分:0)

awk是一个很好的选择:

awk '{print $0} $2=="BB"{print $1,"GG"}' yourfile.txt

这将打印行{print $0}。然后,如果行中的第二个字段等于“BB”,它将打印行中的第一个字段(数字)和文本“GG”。

使用示例:

>echo "1 AA\n3 BB\n4 RR" | awk '{print $0} $2=="BB"{print $1,"GG"}'
1 AA
3 BB
3 GG
4 RR

答案 3 :(得分:0)

在awk中:

$ awk '1; /BB/ && $2="GG"' input
1 AA
3 BB
3 GG
5 CC

1打印记录。如果刚刚打印的记录中有BB,请将其替换为GG并重新打印。