를 사용하여 문자열을 조작하려고 합니다 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