Linux
剪切 CSV 中的第一個和最後一個元素
我在 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。但這裡我也有花括號和“”。
我會這樣做
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/
在替換 - 隨心所欲地調整)
單程:
awk -F"[}{,]" '{print $2, $(NF-1)}' OFS=, file
您也可以使用花括號作為分隔符,因此可以直接訪問元素。