2017-06-13 10 views
0

カンマを区切り記号として使用してフィールドを区切ることができるフィールドがいくつかありますが、実際には "カリフォルニア、CA"などのカンマが含まれます。引用符で囲まれたフィールド内の文字をフィールドの一部として扱う必要がありますが、これを同じ値にするために解析する方法はわかりません。文字列間のコンマ(、)を無視する方法bashスクリプトによって読み込まれるCSVファイル内のコンマを無視する方法

答えて

2

FPATawkがサポートされている場合は、区切り記号ではなくフィールドの正規表現を定義する組み込み変数awkがあります。 ITはFSの補数のように、awkの組み込み変数です。

例:あなたがサンプルデータと期待される出力を投稿するため

echo 'hey there,ola,"Nice, command",ola' |awk -v FPAT='[^,]+|"[^"]+"' '{print $1}' 
hey there 
echo 'hey there,ola,"Nice, command",ola' |awk -v FPAT='[^,]+|"[^"]+"' '{print $2}' 
ola 
echo 'hey there,ola,"Nice, command",ola' |awk -v FPAT='[^,]+|"[^"]+"' '{print $3}' 
"Nice, command" 
echo 'hey there,ola,"Nice, command",ola' |awk -v FPAT='[^,]+|"[^"]+"' '{print $4}' 
ola 
+0

我々は、特定の列 – Manee

+0

@Maneeを作成する必要がある理由は、我々は期待したいです。それ以外の場合は、通常は勝てない推測ゲームです。 –

+0

@manee awkにフィールド区切り文字を認識させなければならないか、フィールド自体にフィールドを認識させる必要があるからです。フィールドセパレータ(カンマ)は、フィールド自体にカンマが含まれているため、ここではよく動作します。 –

関連する問題