需要在来自远程 ssh 的文件末尾的特定行插入一个单词
need to insert a word to a specific line at the end in a file from a remote ssh
我有一个像下面这样的文件
cat test -(X- different words )
XXXXXXXXXXXXXXXXXXX
always-a-constant:::pete
XXXXXXXXXXXXXXXXX
我需要在 pete 旁边添加 steve 并生成一个新文件,输出应如下所示。
XXXXXXXXXXXXXXXXXXX
always-a-constant:::pete,steve
XXXXXXXXXXXXXXXXX
我会用awk
cat test | grep -i alw| awk '{print [=12=]",steve"}'
always-a-constant:::pete,steve
但我还需要其他线路 XXX。
方法一:sed
以此作为我们的测试文件:
$ cat test
XXXXXXXXXXXXXXXXXXX
always-a-constant:::pete
XXXXXXXXXXXXXXXXX
我们可以在任何以 alw
开头的行之后添加 ,steve
以及:
$ sed '/^alw/ s/$/,steve/' test
XXXXXXXXXXXXXXXXXXX
always-a-constant:::pete,steve
XXXXXXXXXXXXXXXXX
在sed的正则表达式中,$
匹配行尾。因此,s/$/,steve/
在行尾添加 ,steve
on。
方法二:awk
$ awk '/^alw/ {[=12=]=[=12=]",steve"} 1' test
XXXXXXXXXXXXXXXXXXX
always-a-constant:::pete,steve
XXXXXXXXXXXXXXXXX
在awk中,[=19=]
表示当前行。 [=20=]",steve"
表示当前行后跟字符串 .steve
。因此,[=22=]=[=22=]",steve"
将当前行替换为当前行后跟 ,steve
.
awk 命令中最后的 1
很重要:它是 awk 的 shorthand for print-the-line。任何 non-zero 号码都可以。更详细地说,awk 将 1
视为条件(布尔值)。因为它的计算结果为真(非零),所以执行操作。因为我们实际上并没有指定一个动作,awk 执行默认的动作,即打印该行。因此,对于 print-the-line.
,1 是 shorthand
方法三:sed
或者,我们可以在任何以 :::pete
结尾的行之后添加 ,steve
并添加:
$ sed 's/:::pete/&,steve/' test
XXXXXXXXXXXXXXXXXXX
always-a-constant:::pete,steve
XXXXXXXXXXXXXXXXX
我有一个像下面这样的文件
cat test -(X- different words )
XXXXXXXXXXXXXXXXXXX
always-a-constant:::pete
XXXXXXXXXXXXXXXXX
我需要在 pete 旁边添加 steve 并生成一个新文件,输出应如下所示。
XXXXXXXXXXXXXXXXXXX
always-a-constant:::pete,steve
XXXXXXXXXXXXXXXXX
我会用awk
cat test | grep -i alw| awk '{print [=12=]",steve"}'
always-a-constant:::pete,steve
但我还需要其他线路 XXX。
方法一:sed
以此作为我们的测试文件:
$ cat test
XXXXXXXXXXXXXXXXXXX
always-a-constant:::pete
XXXXXXXXXXXXXXXXX
我们可以在任何以 alw
开头的行之后添加 ,steve
以及:
$ sed '/^alw/ s/$/,steve/' test
XXXXXXXXXXXXXXXXXXX
always-a-constant:::pete,steve
XXXXXXXXXXXXXXXXX
在sed的正则表达式中,$
匹配行尾。因此,s/$/,steve/
在行尾添加 ,steve
on。
方法二:awk
$ awk '/^alw/ {[=12=]=[=12=]",steve"} 1' test
XXXXXXXXXXXXXXXXXXX
always-a-constant:::pete,steve
XXXXXXXXXXXXXXXXX
在awk中,[=19=]
表示当前行。 [=20=]",steve"
表示当前行后跟字符串 .steve
。因此,[=22=]=[=22=]",steve"
将当前行替换为当前行后跟 ,steve
.
awk 命令中最后的 1
很重要:它是 awk 的 shorthand for print-the-line。任何 non-zero 号码都可以。更详细地说,awk 将 1
视为条件(布尔值)。因为它的计算结果为真(非零),所以执行操作。因为我们实际上并没有指定一个动作,awk 执行默认的动作,即打印该行。因此,对于 print-the-line.
方法三:sed
或者,我们可以在任何以 :::pete
结尾的行之后添加 ,steve
并添加:
$ sed 's/:::pete/&,steve/' test
XXXXXXXXXXXXXXXXXXX
always-a-constant:::pete,steve
XXXXXXXXXXXXXXXXX