を使って文字列を操作しようとしています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