次の形式のファイルがあります。
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