Gawk Line删除,Splitter是:

时间:2016-08-20 14:02:25

标签: bash grep gawk

是否可以将某些.txt文件中的某些列移动到另一个.txt文件中?

我有一个包含以下内容的.txt:

USERID:ORDER#:IP:PHONE:ADDRESS:POSTCODE
USERID:ORDER#:IP:PHONE:ADDRESS:POSTCODE

有了gawk,我想提取ADDRESS& POSTCODE列转换为另一个.txt,因此对于此给定文件,输出应为:

ADDRESS1:POSTCODE1
ADDRESS2:POSTCODE2

3 个答案:

答案 0 :(得分:0)

试试:

awk -F: '{printf "%s:%s ",$5,$6}' ex.txt

输入

USERID:ORDER#:IP:PHONE:ADDRESS1:POSTCODE1
USERID:ORDER#:IP:PHONE:ADDRESS2:POSTCODE2

输出(如果我理解的话,在一行上)

ADDRESS1:POSTCODE1 ADDRESS2:POSTCODE2

唯一的默认值是它以尾随空格结尾,并且不以换行符结尾。

可以通过稍微复杂(但仍然可读)修复:

  awk -F: 'BEGIN {z=0;} {if (z==1) { printf " "; } ; z=1; printf "%s:%s",$5,$6} END{printf"\n"}' ex.txt

答案 1 :(得分:0)

这是一款经典的AWK变换。您想使用“-F:”指定输入由“:”分隔,并在输出上打印新的“:”:

<interactive>:1:6: parse error on input ‘=’

答案 2 :(得分:0)

awk -F: 'NR==1 {print $5"1:"$6"1"};NR==2 {print $5"2:"$6"2"}' file
ADDRESS1:POSTCODE1
ADDRESS2:POSTCODE2