Gawk Line 移除,Splitter 是:

Gawk Line removal, Splitter is :

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

我有一个 .txt 包含:

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

我想使用 gawk 将 ADDRESS 和 POSTCODE 列提取到另一个 .txt 中,因此对于这个给定的文件,输出应该是:

ADDRESS1:POSTCODE1
ADDRESS2:POSTCODE2

等等

试试看:

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

输入是

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

输出是(如果我理解正确的话在一行上)

ADDRESS1:POSTCODE1 ADDRESS2:POSTCODE2

唯一的默认设置是它以尾随 space 结尾并且不以换行符结尾。

可以用稍微复杂一点的方法修复(但仍然可读):

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

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

awk -F: '{ print  ":"  }' <input.txt >output.txt
awk -F: 'NR==1 {print "1:""1"};NR==2 {print "2:""2"}' file
ADDRESS1:POSTCODE1
ADDRESS2:POSTCODE2