shell脚本中awk命令内置参数与脚本参数冲突的解决方法

在shell脚本中使用awk命令,

如:

filename=$1
cat $filename | awk -F"," '{$1="";print $0}'  #删除输入的文档中逗号分隔的第一列,但awk中的$1会使用脚本的参数$1,这里是文档的名字,执行错误

 

解决方法:

脚本中awk用到自身的内置参数时,采用\进行转义

上面的代码改为:

filename=$1
cat $filename | awk -F"," '{\$1="";print $0}'  #删除输入的文档中逗号分隔的第一列

 参考:https://mwenda.game234.com/q/26342294.html

    https://www.cnblogs.com/workingdiary/p/12808373.html

 

补充:

使用sed

如:

sed -i '/keyword/s/=.*/=${value}/g' a.txt #将a.txt中包含keyword的行中等号后面的数据替换为value变量值,如果使用单引号,会直接替换成"=${value}"

需要使用双引号:

sed -i "/keyword/s/=.*/=${value}/g" a.txt
posted @ 2020-11-30 17:37  clovershell  阅读(1435)  评论(0编辑  收藏  举报