以下のようにCSVファイルに配列があります。
input.csv
"{1,2,3,4}"
"{1,2,3,4,5,6,7,8,9}"
"{34,6,7,89}"
このCSVファイルの最初の要素と最後の要素を別のCSVファイルにしたいと思います。
output.csv
1,4
1,9
34,89
私は前に試しました
cut -d , -f1 -- complement input.csv > output.csv
私はこれが一般的なCSVで動作することを知っています。しかし、ここには中かっこと「」もあります。
答え1
私はこれをします。sed
$ sed -r 's/"\{([0-9]+,).*,([0-9]+)\}"/\1\2/' input
1,4
1,9
34,89
ノート
-r
EREを使用\}
言葉{
([0-9]+,)
後で使用できるように、数字の後にカンマを付けて保存してください。\1\2
保存されたスキーマへの逆参照
(あなたの出力はインデントされていますので、必要に応じて交換することもできます。/ \1\2/
必要/\t\1\2/
に応じて調整してください。)
答え2
一方通行:
awk -F"[}{,]" '{print $2, $(NF-1)}' OFS=, file
中かっこを区切り文字として使用することもでき、要素に直接アクセスできます。
答え3
使用sed
:
sed -e 's/,.*,/,/' -e 's/[^0-9,]//g' file
最初のs
コマンドは、最初と最後のコンマの間のすべてをコンマで置き換え、それらの間のすべてを効果的に削除します。
2番目のs
コマンドは、数字やカンマ以外のすべての文字を削除します。
答え4
sed -r "s/(\"|\{|\})//g" input.csv|awk -F, '{print $1","$NF}'