単一行タプルから単一値を抽出するには?

単一行タプルから単一値を抽出するには?

次の形式のデータベースダンプファイルがあります。

('value1','value2',value3','value4'),('value1','value2',value3','value4'),...

まず、各タプルを1行に入れたいのですが、それから1つの値だけをエクスポートしたいと思います(例:各タプルのvalue3)。

答え1

各タプルを別々の行に配置します。

sed 's@)\s*,\s*(@)\n(@g' your_file

ファイルに修正を適用するには(変更されたファイルを標準出力に印刷するのではなく)、次のようにします。

sed -i 's@)\s*,\s*(@)\n(@g' your_file

報告のみvalue3(ファイルが修正されたと仮定):

awk -F',' '{print $3}' <your_new_file

これは値自体が含まれていないと仮定します,。以下のMichaelの説明を参照してください。

一度にすべての操作を実行します(ファイルを変更する必要はありません)。

sed 's@)\s*,\s*(@)\n(@g' your_file | awk -F',' '{print $3}'

上記の呼び出しを単純化するために、あなたの例に従って入力を3番目の値に分割することができ、その中に括弧がないことをawk利用しました。必要に応じて、またはその逆の場合は、次のことができます。,value3value1value4

sed 's@)\s*,\s*(@)\n(@g' your_file | awk -F',' '{print $1}' | sed 's/[()]//'

もちろん、これは値の内容に括弧がないと仮定します。

関連情報