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

関連情報