0

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

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

4

4 回答 4

1

使用head和的组合tail放大到所需的线。例如,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否则,您也会从以前的运行中获得结果。

于 2013-08-14T04:43:29.050 回答
1
$ for f in *.dat ; do sed -n '5p' $f >> test.dat ; done

此代码将执行以下操作:

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

于 2013-08-14T05:32:18.833 回答
0

您可以使用sedawk

sed -n "5p"

awk "NR == 5"
于 2013-08-14T04:49:43.197 回答
0

这可能对您有用(GNU sed):

sed -sn '5wtest.dat' example_*.dat
于 2013-08-14T06:36:06.290 回答