gpt4 book ai didi

linux - bash 中的 awk 语句在 for 循环中不执行

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:51:15 25 4
gpt4 key购买 nike

我有一个包含搜索词 (patts) 的文本文件,我需要将其从“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

不过看起来您可以使用 grep -v 替换 awk:

grep -v "$target" patterns.txt > temp && mv temp patterns.txt

关于linux - bash 中的 awk 语句在 for 循环中不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30961373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com