如何将每行X行从一堆文件复制到另一个文件?

时间:2013-08-14 04:40:46

标签: linux shell sed grep cat

所以我的问题如下: 我有一堆文件,我只需要每个文件中某一行的信息(所有文件都在同一行)。 例: 我想要文件example_1.dat~example_10.dat中的第10行的内容,然后我想将它保存在> TEST.DAT

我尝试使用:head -n 5 example_*.dat > test.dat。但这给了我从顶部直到我选择的线而不仅仅是线的所有信息。 请帮忙。

4 个答案:

答案 0 :(得分:1)

使用headtail的组合缩放到所需的行。例如,head -n 5 file | tail -n 1

您可以使用for循环来完成多个文件

for f in *.dat ; do head -n 5 $f | tail -n 1 >> test.dat ; done

PS:在运行循环之前,不要忘记清除test.dat文件(> test.dat)。否则你也会得到之前运行的结果。

答案 1 :(得分:1)

$ for f in *.dat ; do sed -n '5p' $f >> test.dat ; done

此代码将执行以下操作:

以.dat结尾的目录中的Foreach文件f。 在文件的第5行使用sed并写入test.dat。 ">>"如果存在,将在文件底部添加行。

答案 2 :(得分:0)

您可以使用sedawk

sed -n "5p"

awk "NR == 5"

答案 3 :(得分:0)

这可能适合你(GNU sed):

sed -sn '5wtest.dat' example_*.dat