在bash脚本中将参数传递给循环
我认为这是一个相对简单的问题。我有一部分代码如下所示:在bash脚本中将参数传递给循环,bash,loops,awk,Bash,Loops,Awk,我认为这是一个相对简单的问题。我有一部分代码如下所示: #!/bin/bash file=$(ls -l /home/user_name/) for f in ${file}; do awk 'NR==1{print $2}' done 这个想法是这样的。在系统上有一个名为user\u name的用户。在他的主文件夹中,他有一种类型的文件,比如xxx.txt,yyy.txt。在这些文件中,有一些数据,我想将其作为第二列,这就是awk的用途。如何运行此循环,以便检查目录中的所有文件?如果
#!/bin/bash
file=$(ls -l /home/user_name/)
for f in ${file}; do
awk 'NR==1{print $2}'
done
这个想法是这样的。在系统上有一个名为user\u name的用户。在他的主文件夹中,他有一种类型的文件,比如xxx.txt,yyy.txt。在这些文件中,有一些数据,我想将其作为第二列,这就是awk的用途。如何运行此循环,以便检查目录中的所有文件?如果我为它添加类似于awk'NR==1{print$2}'$s的内容,它只检查一个文件,其余部分则报告有错误。将文件条目直接用于awk,并使用FNR文件NR,而不是计算所有文件的NR,因此NR==1仅用于第一个非空文件
awk 'FNR==1{print $2}' /home/user_name/*.txt
如果您有太多的文件要通过命令传递,可能会失败。需要另一种方法,如查找-exec在这种特殊情况下您使用的是ls-l小写字母l,而不是数字1。。。即使这样,你也应该避免使用。。。尝试在/home/user_name/*.txt中使用f,然后使用awk'NR==1{print$2}'$更简单,而不是循环,只需使用一个简单的awk'FNR==1{print$2}'/home/user_name/*.txt