如何在unix中解析平面文件中的奇数字段?

如何在unix中解析平面文件中的奇数字段?,unix,awk,Unix,Awk,我有一个平面文件,我想从所有行中解析出奇数列 我是UNIX新手,我的方法是 awk 'BEGIN{ FS = OFS = "|" } { for (i=2;i<=NF;i++) { if(i%2==0) { print $i }}}' newProcessFile.txt awk'BEGIN{FS=OFS=“|”}{for(i=2;i您可以这样做awk awk '{for (i=1;i<=NF;i+=2) printf "%s ",$i;print ""}' file awk

我有一个平面文件,我想从所有行中解析出奇数列

我是UNIX新手,我的方法是

awk 'BEGIN{ FS = OFS = "|" } { for (i=2;i<=NF;i++) { if(i%2==0) { print $i }}}' newProcessFile.txt

awk'BEGIN{FS=OFS=“|”}{for(i=2;i您可以这样做
awk

awk '{for (i=1;i<=NF;i+=2) printf "%s ",$i;print ""}' file

awk-F\|'{s=”“;for(i=1;i您可以这样做
awk

awk '{for (i=1;i<=NF;i+=2) printf "%s ",$i;print ""}' file

awk-F\|'{s=”“;for(i=1;i您可以这样做
awk

awk '{for (i=1;i<=NF;i+=2) printf "%s ",$i;print ""}' file

awk-F\|'{s=”“;for(i=1;i您可以这样做
awk

awk '{for (i=1;i<=NF;i+=2) printf "%s ",$i;print ""}' file


awk-F\|'{s=”“;用于(i=1;如果是奇数cols,是不是应该是我%2!=0?啊,我的错!!为这个可怕的错误道歉!!对于奇数cols,不是应该是我%2!=0?啊,我的错!!为这个可怕的错误道歉!!对于奇数cols,不是应该是我%2!=0?啊,我的错!!为这个可怕的错误道歉!!对于奇数cols,不是应该是我%2!=0?啊,我的错!!为这个可怕的错误道歉!!格雷格在一个!!只有一个问题没有;打印“”,它没有产生所需的输出。我的意思是,如果我写awk'BEGIN{FS=OFS=“|”}{for(I=1;I@user3655102,如果你有其他分隔符,你需要对它做一些更改,比如:
awk-F\{s=“”;for(i=1;i+1,但这将在每个输出行的末尾添加一个尾随空白字符。循环打印字段的正确方法是
for(i=1;i1?OFS:),$i;print”“
,或者如果您知道在i==NF时会进入循环(不是这种情况):
for(i=1;i@EdMorton如果使用我的第二个解决方案,如果空格是分隔符,它将不会在行后留下空格:)是的,但它将删除所有数值为零或为空的前导字段(这似乎是当今的常见线程;-))。由于重复的字符串连接(由于动态内存分配,awk中的操作非常慢),它也会比只在进行过程中打印字段的速度慢,但这是nbd。它可能会在某些awk上产生语法错误,因为三元表达式也未进行连接。很好!!只有一个问题没有;打印“”它没有产生所需的输出。我的意思是,如果我写awk'BEGIN{FS=OFS=“|”}{for(I=1;I@user3655102,如果你有其他分隔符,你需要对它做一些更改,比如:
awk-F\|'{s=“”;for(i=1;i+1,但这将在每个输出行的末尾添加一个尾随空白字符。循环打印字段的正确方法是
for(i=1;i1?OFS:),$i;print”“
,或者如果您知道在i==NF时会进入循环(不是这种情况):
for(i=1;i@EdMorton如果使用我的第二个解决方案,如果空格是分隔符,它将不会在行后留下空格:)是的,但它将删除所有数值为零或为空的前导字段(这似乎是当今的常见线程;-))。由于重复的字符串连接(由于动态内存分配,awk中的操作非常慢),它也会比只在进行过程中打印字段的速度慢,但这是nbd。它可能会在某些awk上产生语法错误,因为三元表达式也未进行连接。很好!!只有一个问题没有;打印“”它没有产生所需的输出。我的意思是,如果我写awk'BEGIN{FS=OFS=“|”}{for(I=1;I@user3655102,如果你有其他分隔符,你需要对它做一些更改,比如:
awk-F\|'{s=“”;for(i=1;i+1,但这将在每个输出行的末尾添加一个尾随空白字符。循环打印字段的正确方法是
for(i=1;i1?OFS:),$i;print”“
,或者如果您知道在i==NF时会进入循环(不是这种情况):
for(i=1;i@EdMorton如果使用我的第二个解决方案,如果空格是分隔符,它将不会在行后留下空格:)是的,但它将删除所有数值为零或为空的前导字段(这似乎是当今的常见线程;-))。由于重复的字符串连接(由于动态内存分配,awk中的操作非常慢),它也会比只在进行过程中打印字段的速度慢,但这是nbd。它可能会在某些awk上产生语法错误,因为三元表达式也未进行连接。很好!!只有一个问题没有;打印“”它没有产生所需的输出。我的意思是,如果我写awk'BEGIN{FS=OFS=“|”}{for(I=1;I@user3655102,如果你有其他分隔符,你需要对它做一些更改,比如:
awk-F\|'{s=“”;for(i=1;i+1,但这将在每个输出行的末尾添加一个尾随空白字符。循环打印字段的正确方法是
for(i=1;i1?OFS:),$i;print”“
,或者如果您知道在i==NF时会进入循环(不是这种情况):
for(i=1;i@EdMorton如果使用我的第二个解决方案,如果空格是分隔符,它将不会在行后留下空格:)是的,但它将删除所有数值为零或为空的前导字段(这似乎是当今的常见线程;-))。由于重复的字符串连接(由于动态内存分配,awk中的操作非常慢),它也会比只在执行过程中打印字段的速度慢,但这是nbd。由于三元表达式未被连接,它可能会在某些awk上产生语法错误。
awk -F\| '{s="";for (i=1;i<=NF;i+=2) {s=s?s FS $i:$i} print s}' file
one
one
one|three
one|three
one|three|five
one|three|five