我坚持认为这是一个相对简单的问题。我有一部分代码看起来像这样:
#!/bin/bash
file=$(ls -l /home/user_name/)
for f in ${file}; do
awk 'NR==1{print $2}'
done
这个想法是这样的。在系统上有一个名为user_name
的用户。在他的主文件夹中,他有一种类型的文件,比方说xxx.txt
,yyy.txt
。在这些文件中有数据我想要获取第二列(这就是awk的用途)。如何运行此循环,以便检查目录中的所有文件?如果我添加类似awk 'NR==1{print $2}' $f
的内容,则只检查一个文件,如果有错误则报告。
答案 0 :(得分:1)
直接将文件条目用于awk并使用FNR(文件NR)而不是对所有文件计数的NR(因此NR == 1仅用于第一个非空文件)
awk 'FNR==1{print $2}' /home/user_name/*.txt
如果您在此特定情况下有太多文件要通过命令传递(需要另一种方法,如find ... -exec),可能会失败