テキストファイルの先頭にテキストを追加する

テキストファイルの先頭にテキストを追加する

テキストファイルの先頭にテキスト1行(実際にはテキストではなく2つのバックスラッシュのみを追加)を追加しようとしています。この回答で見つけた次を試しています。大容量ファイルの先頭と末尾に行を追加する

$ sed -i '1i\'"$\\" $Simdata.txt

しかし、私はそれを動作させることができないようです。上記を使用するとエラーが発生します。

sed: 1: ".txt": invalid command code .

txtエンディングを使用しようとしませんでしたが、次のエラーが発生します。

sed: -i may not be used with stdin

私も他の場所で見つけて、コード行を試しました。

$ sed -i '1i \\' Simdata.txt
sed: 1: "Simdata.txt": invalid command code S

修正する:

@don_crissti、あなたの最初の解決策は私が望むものです。しかし、期待どおりに動作しないようです。

$ cat Simdata.txt
abcdefghijkabcdefghijk
//
abcdefghijkabcdefghijk
$ sed '1i\
> \\\\' Simdata.txt
\\abcdefghijkabcdefghijk
//
abcdefghijkabcdefghijk
$ cat Simdata.txt
abcdefghijkabcdefghijk
//
abcdefghijkabcdefghijk

したがって、ファイルは更新されません。ファイルを印刷したくないので、ファイルを更新したり、新しいファイルに印刷するだけです。また、愚かなタイプミスを作りました。実際には2つのスラッシュを追加したかったのです。私の最終目標は次のとおりです。

次のファイルがあります。

abcdefghijkabcdefghijk
//
abcdefghijkabcdefghijk
//
abcdefghijkabcdefghijk

まず、ファイルの先頭に//を追加したいと思います。

//
abcdefghijkabcdefghijk
//
abcdefghijkabcdefghijk
//
abcdefghijkabcdefghijk

次に、各//の後に一意の名前を追加します。

// text 1
abcdefghijkabcdefghijk
// text 2
abcdefghijkabcdefghijk
// text 3
abcdefghijkabcdefghijk

元のファイルを変更せずに新しいファイルに保存します。したがって、上記の質問は、最初のステップを特定することです。

ベストアンサー1

バックスラッシュをエスケープする必要があります。したがって、4つのバックスラッシュが2つのリテラルバックスラッシュを挿入します。

sed '1i\
\\\\' my_text_file

または

sed '1s/^/\\\\\n/' my_text_file

最初はファイルの先頭に2つのバックスラッシュを含む新しい行を挿入し、2番目は最初の行の先頭()^を2つのバックスラッシュと\newlineに置き換えます(同じ結果)。
そしてosx sed

sed '1s/^/\\\\\'$'\n/' mytextfile   

おすすめ記事