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