我已经看到了一些关于如何搜索模式然后将特定字符串附加到该行的示例。我想,我想要完成的是有点不同。我正在写一个简单的脚本,它将接受一个参数,在文件中搜索一个字符串,如果找到,则将参数附加到找到该字符串的行的末尾。我通过这样做来调用这个脚本:
$ bash- ./myscript.sh arg1 [arg2] ...
对于代码我有类似的东西:
for ARGS in $*
do
gawk '{a[NR]=$0}/<patter to be found>/{a[NR]=a[NR] $ARGS}END{for(i=1;i<=NR;i++)print a[i]}' $ORIGFILE > $DESTFILE
cp $DESTFILE $ORIGFILE
done
问题是单引号不会扩展变量,我没有找到正确的语法来完成。没有任何东西扩展或“$ 0”扩展并且会引发语法错误。
有什么建议吗?
谢谢!
答案 0 :(得分:0)
您可以使用以下语法将shell变量传递给awk:
awk -v arg0="$0" -v arg1="$1" '{ print arg0, arg1, $0 }' file
答案 1 :(得分:0)
尝试使用sed
。这项任务似乎比awk
更容易。
sed -i "s/<pattern>/$*/" $ORIGFILE
备注强>
$*
捕获所有参数-i
将进行就地替换"
中包含表达式以扩展shell变量