2013-04-07 164 views
0

我获得第一行和最后1万行的csv如下:在Linux中,如何将两个控制台命令的输出合并到一个文本文件中?

head workrace.csv -n 1 
tail workrace.csv -n 10000 

如何合并输出到一个单一的文本文件?我可以将上述命令输入到两个单独的文本文件中,然后连接文件。有没有办法做到这一点,而不需要使用中介文本文件?

+0

您无法将命令传送到文件。您可以将命令的输出重定向到文件,也可以将输出传送到另一个进程,但不能将输出传送到文件。您只能将输出管道输送到管道。 (从技术上讲,管道是一个文件,但不能将输出管道输送到常规文件。) – 2013-04-08 04:45:58

回答

3

您可以运行在一个子shell这两个命令:

(head workrace.csv -n 1 ; tail workrace.csv -n 10000) > result.txt 

,或者您可以使用>>重定向操作符的内容添加到文件:

head workrace.csv -n 1  > result.txt 
tail workrace.csv -n 10000 >> result.txt 
0

没有提到一些其他的选择choroba:

F=workrace.c 
{ head -n 1 $F; tail -n 10000 $F; } > result.txt # no subshell 
awk 'NR==1 || NR>k-1000' k="$(wc -l < $F)" $F > result.txt 
exec > result.txt # truncate result.txt and direct output of remaining commands to it 
head -n 1 $F 
tail -n 10000 $F 
相关问题