45

既存のCSVファイルにヘッダーの行を追加し、その場で編集したいと思います。これどうやってするの?

echo 'one, two, three' > testfile.csv

そして私は

column1, column2, column3
one,     two,     three

最初のCSV出力を変更するのは私の手に負えません。

どの標準コマンドでもかまいません。重要なのは、ファイルがその場で編集され、ファイルの先頭に行が挿入されることです。

4

8 に答える 8

72

元の質問に答えるために、sed でそれを行う方法は次のとおりです。

sed -i '1icolumn1, column2, column3' testfile.csv

「1i」コマンドは、1 行目に移動してそこにテキストを挿入するように sed に指示します。

-i オプションを使用すると、ファイルが「その場で」編集され、オプションの引数を使用してバックアップ ファイルを作成することもできます。たとえば、

sed -i~ '1icolumn1, column2, column3' testfile.csv

元のファイルを「testfile.csv~」に保持します。

于 2009-01-28T17:14:42.653 に答える
38

これにより、ファイルの先頭にカスタムテキストが追加されます。

echo 'your_custom_escaped_content' > temp_file.csv
cat testfile.csv >> temp_file.csv
mv temp_file.csv testfile.csv
于 2009-01-28T15:21:57.217 に答える
14

これはsedを使用しませんが、>>を使用するとファイルに追加されます。例えば:

echo 'one, two, three' >> testfile.csv

編集:ファイルの先頭に追加するには、次のようにしてみてください。

echo "text"|cat - yourfile > /tmp/out && mv /tmp/out yourfile

私はこれをグーグルで簡単に検索して見つけました。

于 2009-01-28T14:57:44.613 に答える
9

私が理解している限りcolumn1, column2, column3、既存のone, two, three.

ファイルではなく標準出力に書き込むため、edの代わりに使用します。sedsed

コマンド:

printf '0a\ncolumn1, column2, column3\n.\nw\n' | ed testfile.csv

仕事をするべきです。

perl -iも一見の価値があります。

于 2009-01-28T15:10:06.087 に答える
3

sedは行ベースなので、sedでこれを実行する理由がわかりません。このパラダイムは、一度に1行ずつ処理することです(CSV内のフィールドの数をプログラムで検索し、awkを使用してヘッダー行を生成することもできます)。

echo "c1, c2, ... " >> file
cat testfile.csv >> file

于 2009-01-28T15:00:53.607 に答える
1

perl -iを使用して、1行目の先頭を挿入したいものに置き換えるコマンドを使用します(.bkは、元のファイルがバックアップされる効果があります)。

perl -i.bk -pe 's/^/column1, column2, column3\n/ if($.==1)' testfile.csv  
于 2009-01-28T15:28:31.993 に答える