我想使用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完成吗?谢谢
兰德
答案 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
并重新打印。