在同一脚本中的多个文件中搜索变量

时间:2013-06-11 12:52:38

标签: 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的值是否存在于大约60个其他文件中并打印该文件名,并且还必须忽略它原始读取的文件,我目前使用grep执行此操作,但是多次调用grep会导致cpu变高,有没有办法可以在awk脚本本身内执行此操作。

2 个答案:

答案 0 :(得分:1)

你可以尝试使用gnu awk这样的东西。

gawk '/pattern to search/ { print FILENAME; nextfile }' *.files

答案 1 :(得分:0)

您可以使用以下单个grep "$k" *.cfg | grep "something1" | grep "something2" | cut -d -f2,3,4脚本替换管道awk

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
相关问题