我有一个带有搜索词(补丁)的文本文件,需要从“ patterns.txt”中删除。我已经测试了awk语句,它可以正常工作-脚本中除外。
另外,当我回显标准输出时,$ target变量可以正确打印。但是由于某种原因,该语句无法正确执行。
#!/usr/local/bin/bash
input_file='patts'
i=0
while read line; do
array[$i]=$line
i=$((i+1))
done < "$input_file"
for (( i=0; i<${#array[@]}; i++ )); do
target=`eval echo ${array[i]}`
echo $target
awk '!/$target/' patterns.txt > temp && mv temp patterns.txt
done
Shell变量不会用单引号引起来。另外最好使用-v name=value
将参数传递给awk:
awk -v target="$target" '!($0 ~ target)' patterns.txt > temp && mv temp patterns.txt
但是看起来您可以使用replace awk
by grep -v
:
grep -v "$target" patterns.txt > temp && mv temp patterns.txt
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句