我花了这 2 个小时,但一无所获。我想获得 1 美元和 2 美元作为 shell 脚本的第一个命令行输入,但我无法管理。而 3 美元和 0 美元将是 awk 中的列。我尝试了不同的方法,但对我没有任何用处。
awk -F':' -v "limit=1000" '{ if ( $3 >=limit ) gsub("~/$1/",~/$2/); print $0}' file.txt
最干净的方法是使用 awk 的 -v
选项将值从 shell 显式传递到 awk:
awk -F: -v limit=1000 -v patt="~/$1/" -v repl="~/$2/" '
$3 >=limit {gsub(patt,repl); print}
' file.txt
当您的 awk 行是脚本文件的一部分,并且您想在 awk 命令中使用脚本中的 $1 和 $2 时,您应该暂时停止带有单引号的文本字符串并重新开始它。
awk -F':' -v "limit=1000" '{ if ( $3 >=limit ) gsub("~/'$1'/",~/'$2'/); print $0}' file.txt
您没有发布任何示例输入或预期输出,所以这是一个猜测,但您可能想要这样的东西:
awk -F':' -v limit=1000 -v arg1="$1" -v arg2="$2" '$3 >= limit{gsub("~/" arg1 "/","~/" arg2 "/"); print}' file.txt