Awk 在同一脚本中的多个文件中搜索变量
我有一个脚本,它读取文件的每一行并根据特定匹配输出Awk 在同一脚本中的多个文件中搜索变量,awk,Awk,我有一个脚本,它读取文件的每一行并根据特定匹配输出 function tohyphen (o) { split (o,a,"to[-_]") split (a[2],b,"-") if (b[1] ~ / /) { k=""; p=""; } else { k=b[1]; p=b[2] } if (p ~ / /) { p="" } return k } print k, "is present in" , FILENAME 我需要做的是检查k
function tohyphen (o) {
split (o,a,"to[-_]")
split (a[2],b,"-")
if (b[1] ~ / /) { k=""; p=""; }
else { k=b[1]; p=b[2] }
if (p ~ / /) { p="" }
return k
}
print k, "is present in" , FILENAME
我需要做的是检查k的值是否存在于其他大约60个文件中,并打印该文件名,同时它必须忽略它最初读取的文件,我目前正在使用grep执行此操作,但是多次调用grep会导致cpu变高,有没有一种方法可以在awk脚本本身中实现这一点。您可以在gnu awk中尝试类似的方法
gawk '/pattern to search/ { print FILENAME; nextfile }' *.files
你可以用gnu awk试试这样的东西
gawk '/pattern to search/ { print FILENAME; nextfile }' *.files
您可以使用以下单个
awk
脚本替换管道grep“$k”*.cfg | grep“something1”| grep“something2”| cut-d-f2,3,4
:
awk -v k="$k" '$0~k&&/something1/&&/something2/{print $2,$3,$4}' *.cfg
您在问题中提到打印文件名,在本例中:
awk -v k="$k" '$0~k&&/something1/&&/something2/{print FILENAME;nextfile}' *.cfg
您可以使用以下单个
awk
脚本替换管道grep“$k”*.cfg | grep“something1”| grep“something2”| cut-d-f2,3,4
:
awk -v k="$k" '$0~k&&/something1/&&/something2/{print $2,$3,$4}' *.cfg
您在问题中提到打印文件名,在本例中:
awk -v k="$k" '$0~k&&/something1/&&/something2/{print FILENAME;nextfile}' *.cfg
你能发布你的grep命令吗?如果只有60个文件,对CPU来说应该不是什么大事。grep“$k”*.cfg | grep“something 1”| grep“something 2”| cut-d-f2,3,4我认为问题是每个文件可能有10到20k行,因此为每行运行grep可能会推动cpu?请发布grep命令好吗?如果只有60个文件,对CPU来说应该不是什么大事。grep“$k”*.cfg | grep“something 1”| grep“something 2”| cut-d-f2,3,4我认为问题是每个文件可能有10到20k行,因此为这些行中的每一行运行grep可能会推动cpu?如何将此内联到现有脚本中?它单独运行很好,但比grep慢。如何将其内联到现有脚本中?它单独运行很好,但比grep慢。