次の形式のデータベースダンプファイルがあります。
('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
利用しました。必要に応じて、またはその逆の場合は、次のことができます。,
value3
value1
value4
sed 's@)\s*,\s*(@)\n(@g' your_file | awk -F',' '{print $1}' | sed 's/[()]//'
もちろん、これは値の内容に括弧がないと仮定します。