両方のフィールドに区切り文字と引用符を使用する場合は、awk

両方のフィールドに区切り文字と引用符を使用する場合は、awk

次の形式のファイルがあります。

field1|field2|field3
field1|"field2|field2"|field3

2行目には二重引用符が含まれています。二重引用符内の文字列はフィールド2に属します。 awkを使用してこの文字列をどのように抽出できますか?私は結果なしでインターネット検索をしてきました。私も試してみましたが幸運ではありませんでした

FS='"| "|^"|"$' '{print $2}'  

ベストアンサー1

最新バージョンがあればgawk幸運になります。このFPAT機能は存在し、記録されました。ここ

awk 'BEGIN {
 FPAT = "([^|]+)|(\"[^\"]+\")"
}
{
 print "NF = ", NF
 for (i = 1; i <= NF; i++) {
    sub(/"$/, "", $i); sub(/^"/, "", $i);printf("$%d = %s\n", i, $i)
 }
}' file

NF =  3
$1 = field1
$2 = field2
$3 = field3
NF =  3
$1 = field1
$2 = field2|field2
$3 = field3

おすすめ記事