awk를 사용하여 행의 특정 필드 앞에 추가

awk를 사용하여 행의 특정 필드 앞에 추가

를 사용하여 줄 시작 부분에 입력 줄의 네 번째 필드( )도 인쇄해 awk보았습니다 .$4

다음 코드를 시도했지만 문자열이 인쇄됩니다.이상은행:

awk -F"[--]" '{print $4 ;print$0}' file

문자열이 무작위이므로 문자열 이름을 사용할 수 없습니다.

입력은 다음과 같습니다.

/example-origin-live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9

위의 코드를 사용하면 다음과 같은 결과를 얻습니다.

320
/example-origin-live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9

다음과 같은 출력이 필요합니다.

320/example-origin-live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9

도와 주셔서 감사합니다!

답변1

기본적으로 개별 인쇄 문은 개별 레코드(행)를 인쇄합니다. Single print, Join $4및 다음 을 사용하십시오 $0.

% awk -F- '{print $4 $0}' input
320/example-origin-live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9

답변2

줄 시작 부분의 대시 중 일부가 사라지면 필드 번호로 각 줄 앞에 추가할 문자열을 선택하기가 어렵습니다. 예를 들어 항상 필드 4가 아닐 수도 있기 때문입니다.

$ cat file
/example-origin-live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9
/example.origin-live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9
/example.origin.live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9

대신 다음 코드는 각 줄에서 두 번째로 -구분된 단어를 선택합니다 :.

$ sed 's/^\([^:]*:[^-]*-\([^-]*\)\)/\2\1/' file
320/example-origin-live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9
320/example.origin-live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9
320/example.origin.live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9

또는 아마도 더 읽기 쉽습니다 awk.

$ awk -F ':' '{ split($2,a,"-"); print a[2] $0 }' file
320/example-origin-live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9
320/example.origin-live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9
320/example.origin.live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9

행이 기본적으로 두 개의 구분된 필드라고 가정하고 :거기에서 두 번째 필드를 분할 -하고 결과 필드의 두 번째 필드를 사용하여 출력합니다.

각 줄의 끝 비트에 대한 정적 형식이 있는 경우 분명히 시작 대신 끝에서부터 필드 수를 계산하고 awk다음과 같이 사용할 수 있습니다.

$ awk -F '-' '{ print $(NF - 5) $0 }' file
320/example-origin-live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9
320/example.origin-live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9
320/example.origin.live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9

관련 정보