Shell脚本复制文本文件的所有列而不是指定的列

时间:2016-07-19 04:18:44

标签: shell

我尝试从一个文本文件中复制3列并将其粘贴到新的文本文件中。但是,每当我执行此脚本时,原始文本文件中的所有列都将被复制。这是我使用的代码:

data

有关我做错的建议吗?另外,有更简单的方法吗?谢谢!

3 个答案:

答案 0 :(得分:2)

我们假设输入是逗号分隔的:

$ cat File
1,2,3,4,5,6,7
a,b,c,d,e,f,g

我们可以使用cut提取第1,2和6列:

$ cut -d, -f 1,2,6 File
1,2,6
a,b,f

请注意使用选项-d,指定列分隔符是逗号。

默认情况下,cut使用标签作为列分隔符。如果文件中的分隔符是其他内容,则必须使用-d选项。

答案 1 :(得分:1)

使用awk

awk -vFS=your_delimiter_here -vOFS=your_delimiter_here  'print $1,$2,$6' PROFILES.1.0.profile > compiledfile.txt

应该这样做。

对于以逗号分隔的字段,解决方案为

awk -vFS=, -vOFS=, '{print $1,$2,$6}' PROFILES.1.0.profile > compiledfile.txt

FSawk builtin变量,代表field-separator。 同样地,OFS代表output-field-separator

使用awk的方便的-v选项可以帮助您为变量赋值。

答案 2 :(得分:0)

你可以使用awk。

awk -F "delimiter" '
{
print $1,$2 ,$3 #Where $1,$2 and so are column numbers
}' filename > newfile