awk中如何获取文件名

awk中如何获取文件名

我有一个 zip 文件,其名称和记录如下:

  • 文件名:OMS_Profile_20150922.list.Z

样本记录:

1234568194|301776931|301344831|301745924|4000247920|5|1|14|
1234525025|300667099|300316999|300645099|300624099|5|1|14|
1234586176|301121638|301131238|301145638|301124638|5|1|14|
1234597373|300689187|345664087|302464187|300624187|5|1|21|

现在我想通过awk命令获得以下所需的输出:

field1|field6|field7|field8|OMS_Profile_20150922.list.Z

答案1

假设该.Z文件是compress- 压缩文件(正如.Z扩展名所暗示的那样,与 PKZIP 档案相反压缩文件会建议):

FILE='OMS_Profile_20150922.list.Z'
export FILE
zcat < "$FILE" | awk -F'|' -v OFS='|' '
  {print $1,$6,$7,$8, ENVIRON["FILE"]}'

答案2

像这样的东西应该有效:

unzip -c /tmp/test.zip >/tmp/test.txt
awk -F "|" 'START {OFS="|"} {print $1,$6,$7,$8,FILENAME}' /tmp/test.txt

答案3

read s d t f_name < <(unzip -qql OMS_Profile_20150922.list.Z)
unzip -p OMS_Profile_20150922.list.Z | 
awk -F'|' '{print $1,$6,$7,$8,f_name}' OFS='|' f_name="$f_name"

相关内容