web-dev-qa-db-ja.com

コマンドラインツールを使用してCSVヘッダーの名前を変更する

CSVファイルを考えると、

h1 h2 h3
a  b  c
z  x  b

コマンドラインツールを使用して、最初のヘッダーの名前をOneに、3番目のヘッダーの名前をThreeに変更する方法。

One h2 Three
a   b  c
z   x  b
5
elm

これはそれを行う必要があります:

https://stackoverflow.com/questions/11145270/bash-replace-an-entire-line-in-a-text-file

ヘッダーはファイルの最初の行だけにする必要があるため、N = 1を使用し、目的のヘッダーを使用して行を書き換えます。

sed -i '1s/.*/One, h2, Three/' file.csv

それをします

5
sean read

行ベースのソリューション(sedベースなど)は、複数行のcsvヘッダーでは機能しません。

したがって、csv形式を理解するための何かが必要です。

たとえば、csvtool(ocaml)の場合:

echo 'My,New,Header'      > output.csv
csvtool drop 1 input.csv >> output.csv
1
Adobe

Sedには、現在の行全体を置き換える「変更」コマンドcがあります。

sed -i '1c\One h2 Three' file.csv

これはGNU sedで機能します。他のsedでは、テキストを別の行に入力する必要がある場合があります。

sed -i '1c\
One h2 Three' file.csv
0
Benjamin W.