テキストファイルの先頭にテキスト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つのバックスラッシュと\n
ewlineに置き換えます(同じ結果)。
そしてosx sed
:
sed '1s/^/\\\\\'$'\n/' mytextfile
答え2
\\
ファイルの先頭に2つを追加するにはこれ動作する必要があります:
echo '\\' | cat - todo.txt > temp && mv temp todo.txt
答え3
echo '\\\\' > newfile.txt; cat oldfile.txt >> newfile.txt