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

如何在特定文本后附加带有sed/awk的行,awk,sed,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,粘贴和正则表达式替换。 这可以用sed或awk完成吗?谢谢 兰德awk是一个很好的选择: awk '{print $0} $2=="BB"{print $1,"GG"}' yourfile.txt 这将打印行{print

我想使用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,粘贴和正则表达式替换。 这可以用sed或awk完成吗?谢谢
兰德

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

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
使用GNU时:

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

1 AA 3 BB 3 GG 5 CC 1 AA 3 BB 3 GG 5毫升 使用GNU时:

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

1 AA 3 BB 3 GG 5 CC 1 AA 3 BB 3 GG 5毫升 在awk中:

$ awk '1; /BB/ && $2="GG"' input
1 AA
3 BB
3 GG
5 CC
1
打印记录。如果刚打印的记录中有
BB
,请将其替换为
GG
,然后再次打印。

在awk中:

$ awk '1; /BB/ && $2="GG"' input
1 AA
3 BB
3 GG
5 CC
1
打印记录。如果刚刚打印的记录中有
BB
,请将其替换为
GG
,然后重新打印。

这可能对您有用(GNU-sed):

如果该行包含所需的字符串,请打印它,然后用另一个字符串替换它。

这可能适用于您(GNU-sed):

如果该行包含所需的字符串,请打印该行,然后用另一个字符串替换该行