コンマから列に変換(sed)

コンマから列に変換(sed)

次の形式のいくつかのテキストを含む* .csvファイルがあります。

a, b, c 
d, e, f
g, h, i

これを3つの列を持つ* .xlsファイルに変換したいと思います。 「sed」を使ってこれを行うことはできますか?

編集:これは単なる例です。私が興味を持っているのは、シンボルを列の移動に置き換えることです(不可能でない場合)。次に、次のようにテキストを操作したいと思います。

単一列

a[kg/m] 

2列形式

a     [kg/m]

しかし、これが可能かどうかはわかりません!しかし、「sed」が* .csvファイルを置き換えて修正するために多くのトリックを実行できることを知っています。

ベストアンサー1

リクエストの 2 番目の部分を正しく理解したかどうかわかりません。

単一列a[kg/m]から2列形式へa [kg/m]

ただし、これによりcsvがタブ区切りファイルに変換され、[Kg / m]の前に追加の列が追加されます。

sed -e 's/,/\t/g' -e 's:\(\[Kg/m\]\):\t\1:g' afile.csv > newfile.csv

例:

$ cat afile.csv
a[Kg/m],b[Kg/m],c
d[Kg/m],e[Kg/m],f
g[Kg/m],h[Kg/m],i

$ sed -e 's/,/\t/g' -e 's=\(\[Kg/m\]\)=\t\1=g' afile.csv > newfile.csv

$ cat newfile.csv
a       [Kg/m]  b       [Kg/m]  c
d       [Kg/m]  e       [Kg/m]  f
g       [Kg/m]  h       [Kg/m]  i

この sed コマンドには 2 つのスクリプトがあります。

  • -e 's/,/\t/g'','次へ交換<tab>
  • -e 's=\(\[Kg/m\]\)=\t\1=g'[Kg/m]何でも交換<tab>[Kg/m]

これで、タブに置き換えなくても、次を使用してCSVファイルに追加の列を追加できます。

$ sed -e 's=\(\[Kg/m\]\)=,\1=g' afile.csv > newfile.csv
$ cat newfile.csv
a,[Kg/m],b,[Kg/m],c
d,[Kg/m],e,[Kg/m],f
g,[Kg/m],h,[Kg/m],i

おすすめ記事