awk 문자열 작업

awk 문자열 작업

를 사용하여 문자열을 조작하려고 합니다 awk.

입력하다

ABCD|98855.9849:122,9440.9886:3434|TEST

산출

ABCD|98855.9849:122,9440.9886:3434|TEST|122

나는 다음 명령을 시도했다

echo "ABCD|9885.9849:122,9440.9886:3434|TEST" |
    awk -F"|" '{print $1"|"$2"|"$3"|"system("echo "$2"|awk -F[:,] '{print $2}'")}'

하지만 난 이해해

awk: {print $1"|"$2"|"$3"|"system("echo "$2"|awk -F[:,] {print
awk:                          ^ unterminated string

어떻게 하나요?

답변1

awk이 작업은 다음 기능을 사용하여 한 번에 수행할 수 있습니다 split() .

$ awk -F"|" -v OFS="|" '{split($2, arr, "[,:]"); print $1, $2, $3, arr[2]}' input
ABCD|9885.9849:122,9440.9886:3434|TEST|122
  • -v OFS="|"출력 필드 구분 기호를 설정하면 매번 지정할 print $1, $2, ...필요가 없습니다 .|
  • split($2, arr, "[;,]")구분 기호 정규식을 사용하여 내용을 배열 $2(예:)로 분할합니다.arr[,:]FS

관련 정보