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

相关内容