将变量的输出附加到特定行的末尾

时间:2014-01-12 04:17:57

标签: bash

在我的模板(回调)中,有一行以“IP:”结尾,我想追加。我试过这个命令:

cat callbacks | grep "IP:" | cut -d ":" -f 2 | echo $(ping -c2 host.com). 

我以为我最终能够回应一些东西,但那不起作用。有人可以说清楚我做错了什么。

这是我到目前为止所做的:

for textfile in $(find . -iname "2013*-malware-callback*.txt")
    do cat callbacks | cat - $textfile > tmpfile && mv tmpfile $textfile
done

1 个答案:

答案 0 :(得分:0)

以下获取$textfile的内容,查找IP的任何出现:并向其追加IP地址,并将结果保存在tmpfile中:

v="1.2.3.4"
cat "$textfile" | sed 's/IP:/IP: '"$v/" >tmpfile

管道可以简化:

sed 's/IP:/IP: '"$v/" <"$textfile" >tmpfile

此外,如果最终目标是用修改后的版本替换$ textfile,我们可以使用sed的就地修改功能:

sed -i.bak 's/IP:/IP: '"$v/" "$textfile"

这会修改$ textfile,为了妥善管理,请保留原始文件的备份副本,扩展名为.bak。