在$ var_no_N之后选择所有变量

时间:2013-03-12 16:59:52

标签: bash shell scripting

我想选择在N个变量之后出现的全部或一组变量。

例如:我有一个包含逗号分隔的多行文件。如何选择变量号后面的所有变量。 4并将它们输出到另一个文件?

我有一个文件test1.txt

A, B, C, D, E    
A, B, C, D, E, F, G    
A, B, C, D    

并希望output.txt中的以下输出:

E    
E, F, G  
(Nothing), as Line 3 had only 4 variables.

2 个答案:

答案 0 :(得分:1)

您可以使用cut

执行此操作
cut -d, -f5- test1.txt > output.txt

说明:
- cut根据-d参数分解块中的每一行。在我们的例子中,逗号。
- 使用-f我们指出必须打印哪些块。 -f1将打印第一个,-f-3会打印出前三个。使用-f5-,您可以从第5页打印到最后。

答案 1 :(得分:0)

使用sed:

sed -e '/^\([^,]*,\s*\)\{4\}/!d;s/^\([^,]*,\s*\)\{4\}//' test1.txt

编辑:只是看着它并意识到它可以简化(忘记了t分支命令):

sed -e 's/^\([^,]*,\)\{4\}//;tX;d;b;:X;s/^\s*//' test1.txt

并且隔离一个值(在这种情况下为17)而不是运行到行尾:

sed -e 's/^\([^,]*,\)\{16\}//;tX;d;b;:X;s/^\s*\([^,]*\).*/\1/' test1.txt