如何通过变量传递filename以通过awk读取它

时间:2014-04-21 15:23:55

标签: bash shell awk

美好的一天,

我想知道如何将文件名作为变量传递给awk,以便awk读取它。

到目前为止,我已经完成了:

echo    file1   >  Aenumerar
echo    file2   >> Aenumerar
echo    file3   >> Aenumerar

AE=`grep -c '' Aenumerar`
r=1
while [ $r -le $AE ]; do
    lista=`awk "NR==$r {print $0}" Aenumerar`
    AEList=`grep -c '' $lista`
    s=1
    while [ $s -le $AEList ]; do
        word=`awk -v var=$s 'NR==var {print $1}' $lista`
        echo $word
    let "s = s + 1"
    done
let "r = r + 1"
done

非常感谢您使用bash命令行

进行任何线索或其他简单方法

2 个答案:

答案 0 :(得分:5)

而不是:

awk "NR==$r {print $0}" Aenumerar

您需要使用:

awk -v r="$r" 'NR==r' Aenumerar

答案 1 :(得分:5)

根据您发布的内容判断,您实际上并不需要所有NR内容;你可以用这个替换整个脚本:

while IFS= read -r lista ; do
    awk '{print $1}' "$lista"
done < Aenumerar

(这会在file1file2file3的每一行中打印每行的第一个字段。我认为这是您尝试做的事情?)