我想选择在 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.
你可以这样做cut
:
cut -d, -f5- test1.txt > output.txt
解释:
- cut 根据-d
参数将每一行分解成块。在我们的例子中,逗号。
--f
我们指出必须打印哪些块。-f1
将打印第一个,-f-3
将打印前三个。与-f5-
您一起打印从 5 日到最后。
使用 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