awk第一行无法删除列

awk第一行无法删除列,awk,Awk,我正在尝试使用以下代码从文件的所有行中删除26号以外的列: awk '{ FS = ";" ; for(i=1;i<NF;i++) if (i<26) printf $i FS}{print $26}' awk'{FS=“;”;for(i=1;i这是因为您在每一行上设置了FS,而它应该位于BEGIN{}块中(或者作为参数在外部,就像其他答案正确建议的那样): 4列的示例 示例文件: $ cat a 1col1;col2;col3;col4;col5;col6 2col1;col2;

我正在尝试使用以下代码从文件的所有行中删除26号以外的列:

awk '{ FS = ";" ; for(i=1;i<NF;i++) if (i<26) printf $i FS}{print $26}'

awk'{FS=“;”;for(i=1;i这是因为您在每一行上设置了
FS
,而它应该位于
BEGIN{}
块中(或者作为参数在外部,就像其他答案正确建议的那样):

4列的示例 示例文件:

$ cat a
1col1;col2;col3;col4;col5;col6
2col1;col2;col3;col4;col5;col6
3col1;col2;col3;col4;col5;col6
以前的代码:

$ awk '{FS=";"; for(i=1;i<NF;i++) if (i<4) printf $i FS}{print $4}' a

2col1;col2;col3;col4
3col1;col2;col3;col4

这是因为您在每一行上都设置了
FS
,而它应该位于
BEGIN{}
块中(或者作为参数在外部,就像其他答案正确建议的那样):

4列的示例 示例文件:

$ cat a
1col1;col2;col3;col4;col5;col6
2col1;col2;col3;col4;col5;col6
3col1;col2;col3;col4;col5;col6
以前的代码:

$ awk '{FS=";"; for(i=1;i<NF;i++) if (i<4) printf $i FS}{print $4}' a

2col1;col2;col3;col4
3col1;col2;col3;col4
@费多尔基是对的

但您也可以使用此设置字段分隔符:

awk -F";" '{for(i=1;i<NF;i++) if (i<26) printf $i FS}{print $26}' file
awk-F”;“{for(i=1;i@fedorqui是对的

但您也可以使用此设置字段分隔符:

awk -F";" '{for(i=1;i<NF;i++) if (i<26) printf $i FS}{print $26}' file

awk-F”;“{for(i=1;i你可以试试这个
awk

awk -F';' 'NF>26{NF=26}1' OFS=';' yourfile

您可以试试这个
awk

awk -F';' 'NF>26{NF=26}1' OFS=';' yourfile