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"

관련 정보