我有一个像下面这样的文件
cat test -(X- different words )
XXXXXXXXXXXXXXXXXXX
always-a-constant:::pete
XXXXXXXXXXXXXXXXX
我需要在pete旁边添加steve并生成一个新文件,输出应该如下所示。
XXXXXXXXXXXXXXXXXXX
always-a-constant:::pete,steve
XXXXXXXXXXXXXXXXX
我可以用锥子
cat test | grep -i alw| awk '{print $0",steve"}'
always-a-constant:::pete,steve
但我还需要其他的电话。
最佳答案
方法1:SED
以此作为我们的测试文件:
$ cat test
XXXXXXXXXXXXXXXXXXX
always-a-constant:::pete
XXXXXXXXXXXXXXXXX
我们可以在以
,steve
开头的任何行之后添加alw
,其中:$ sed '/^alw/ s/$/,steve/' test
XXXXXXXXXXXXXXXXXXX
always-a-constant:::pete,steve
XXXXXXXXXXXXXXXXX
在sed的正则表达式中,
$
匹配行尾。因此,s/$/,steve/
将,steve
添加到行的末尾。方法2:awk
$ awk '/^alw/ {$0=$0",steve"} 1' test
XXXXXXXXXXXXXXXXXXX
always-a-constant:::pete,steve
XXXXXXXXXXXXXXXXX
在awk中,
$0
表示当前行。$0",steve"
表示当前行,后跟字符串.steve
。因此,$0=$0",steve"
用后跟,steve
的当前行替换当前行。awk命令中的final
1
很重要:它是awk打印行的简写。任何非零的数字都可以。更详细地说,awk将1
视为一个条件(布尔值)。因为它的计算结果为true(非零),所以执行该操作。由于我们实际上没有指定操作,awk执行默认操作,即打印行。因此,1是打印行的缩写。方法3:SED
或者,我们可以在以
,steve
结尾的任何行之后添加:::pete
,其:$ sed 's/:::pete/&,steve/' test
XXXXXXXXXXXXXXXXXXX
always-a-constant:::pete,steve
XXXXXXXXXXXXXXXXX
关于linux - 需要从远程ssh在文件末尾的特定行插入一个单词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49399156/