所以我的问题如下: 我有一堆文件,我只需要每个文件中某一行的信息(所有文件都在同一行)。 例: 我想要文件example_1.dat~example_10.dat中的第10行的内容,然后我想将它保存在> TEST.DAT
我尝试使用:head -n 5 example_*.dat > test.dat
。但这给了我从顶部直到我选择的线而不仅仅是线的所有信息。
请帮忙。
答案 0 :(得分: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
)。否则你也会得到之前运行的结果。
答案 1 :(得分:1)
$ for f in *.dat ; do sed -n '5p' $f >> test.dat ; done
此代码将执行以下操作:
以.dat结尾的目录中的Foreach文件f。 在文件的第5行使用sed并写入test.dat。 ">>"如果存在,将在文件底部添加行。
答案 2 :(得分:0)
您可以使用sed
或awk
:
sed -n "5p"
awk "NR == 5"
答案 3 :(得分:0)
这可能适合你(GNU sed):
sed -sn '5wtest.dat' example_*.dat