我有一个像下面这样的文件

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命令中的final1很重要:它是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/

10-10 08:12