匹配模式后添加行

时间:2017-12-28 06:15:57

标签: bash awk sed echo

我有一个文件说测试,其中包含以下值

Linux
Solaris
Fedora
Ubuntu
AIX
HPUX

如何在符合AIX的行之后添加带有系统主机名的行?如果我做

echo `hostname` >> test

系统主机名在HPUX之后位于最后。

2 个答案:

答案 0 :(得分:1)

您能否请关注awk并告诉我这是否对您有所帮助。

 awk -v host=$(hostname) '$0 == "AIX"{print $0 RS host;next} 1'  Input_file

编辑: 此处还添加了1个解决方案。

awk -v host=$(hostname) '{printf("%s%s\n",$0,$0=="AIX"?RS host:"")}'

答案 1 :(得分:1)

使用sed:

sed "s/^AIX$/& $(hostname)/" file

如果该行包含 AIX

sed "s/AIX.*/& $(hostname)/" file

修改

要在匹配行后附加主机名,请尝试a(追加)命令:

sed "/^AIX$/a $(hostname)" file