传递参数以在bash脚本中循环

时间:2017-03-08 12:39:48

标签: bash loops awk

我坚持认为这是一个相对简单的问题。我有一部分代码看起来像这样:

#!/bin/bash
file=$(ls -l /home/user_name/)
for f in ${file}; do
    awk 'NR==1{print $2}'
done

这个想法是这样的。在系统上有一个名为user_name的用户。在他的主文件夹中,他有一种类型的文件,比方说xxx.txtyyy.txt。在这些文件中有数据我想要获取第二列(这就是awk的用途)。如何运行此循环,以便检查目录中的所有文件?如果我添加类似awk 'NR==1{print $2}' $f的内容,则只检查一个文件,如果有错误则报告。

1 个答案:

答案 0 :(得分:1)

直接将文件条目用于awk并使用FNR(文件NR)而不是对所有文件计数的NR(因此NR == 1仅用于第一个非空文件)

awk 'FNR==1{print $2}' /home/user_name/*.txt

如果您在此特定情况下有太多文件要通过命令传递(需要另一种方法,如find ... -exec),可能会失败

相关问题