如何更改脚本一部分的awk分隔符?

Que*_*ark 1 bash awk parsing

我有一个输入字符串,其格式如下:

string1;string2"string3";string4

我想解析此文件以获得string3using 的值awk。为此,我可以先定界;,打印第二段,然后定界"并打印第二段。使用管道的示例:

$ echo 'string1;string2"string3";string4' | awk -F\; '{print $2}' | awk -F\" '{print $2}';
string3
Run Code Online (Sandbox Code Playgroud)

我想将其合并为一个awk命令,但是我不知道如何在命令期间更改字段分隔符。我可以使用语法awk来更改分隔符吗?

anu*_*ava 5

您可以使用split函数里面awk

s='string1;string2"string3";string4'
awk -F ';' 'split($2, a, /"/){print a[2]}' <<< "$s"

string3
Run Code Online (Sandbox Code Playgroud)

根据链接的文档:

split(string, array [, fieldsep [, seps ] ])
将字符串划分为由fieldsep分隔的片段,并将片段存储在数组中,并将分隔符字符串存储在seps数组中。