Awk 从多个文件返回第n行
给定一个包含多个.csv文件的文件夹,我想返回每个文件的第n行并写入一个新文件 对于单个文件,我使用Awk 从多个文件返回第n行,awk,git-bash,Awk,Git Bash,给定一个包含多个.csv文件的文件夹,我想返回每个文件的第n行并写入一个新文件 对于单个文件,我使用 awk 'NR==5' file.csv 对于多个文件,我想 ls *.csv | xargs awk 'NR==5' …但是,这仅返回列表中第一个文件的第5行 谢谢 请尝试以下内容并让我知道这是否对您有帮助(我相信GNUawk应该会有帮助): 若您需要将输出放入一个单独的输出文件中,则在上述命令的最后附加>output\u file 说明: FNR==5:检查当前输入文件的
awk 'NR==5' file.csv
对于多个文件,我想
ls *.csv | xargs awk 'NR==5'
…但是,这仅返回列表中第一个文件的第5行
谢谢 请尝试以下内容并让我知道这是否对您有帮助(我相信GNU
awk
应该会有帮助):
若您需要将输出放入一个单独的输出文件中,则在上述命令的最后附加>output\u file
说明:
FNR==5
:检查当前输入文件的行号是否为第5行,然后执行后面提到的操作
{print;}
:print
是awk
开箱即用的关键字,用于打印当前行,因此只打印第5行
nextfile
:就名称本身而言,nextfile
显然将跳过当前输入文件中的所有行(因为我最后给出了*.csv,所以这意味着它将通过1将所有csv文件传递给awk
1)这将为我们节省时间,因为我们不想读取输入文件中的条目,我们只需要第5行,就得到了它。成功了!非常感谢-你能解释一下为什么我需要它吗?@Mikeec,现在也添加了解释,让我知道这是否对你有帮助。完美-现在完全跟踪,再次感谢你的帮助@Mikeec,很高兴它帮助了您,看看我们是如何感谢堆栈内溢出的,您想要FNR==5
:这是当前文件的记录编号NR
是输入流中看到的所有记录的记录编号。
awk 'FNR==5{print;nextfile}' *.csv