sed を使用して、ファイルの最初の行全体をその最初の行と追加のテキストに置き換えるにはどうすればよいですか? たとえば、-foo
1 行のみを含むファイルに追加するにはどうすればよいでしょうか。
testfile
コンテンツ開始:
some-text
testfile
内容終了:
some-text-foo
答え1
ファイルの最初の行に追加するにはどうすればよいですか?
sed を使用して、ファイルの最初の行全体をその最初の行と追加のテキストに置き換えるにはどうすればよいですか?
Windows で SED を使用して行番号 1 の末尾に文字列を追加し、それを DOS 形式 (つまり LF ではなく CRLF) に戻す別の方法を示します。
最初のコマンド (-foo
最初の行の末尾にのみ文字を追加します)
SED -i "1 s|$|-foo|" "C:\Path\testfile.txt"
2 番目のコマンド (EOL を復帰改行に戻す)
SED -i "s/$/\r/" "C:\Path\testfile.txt"
答え2
sed '1{s/$/-foo/}' file
1 は最初の行で、範囲を指定するために使用できますnum,num
。たとえば、3,5 は行 3 を行 5 に変更します。s は置換で、$ は行末を意味します。ファイルをすぐに変更したい場合は、-i
パラメータを使用しますが、いずれにしても注意して使用してください。
awk 'FNR==1{print $0 "-foo";}' file(s)
awk はより強力ですが、ファイルをすぐに変更するための -i パラメータがありません。
答え3
これは次のように行うことができます
sed -i '1!b;s/$/\-foo/g' testfile
これはファイルを取得し、最初の行のみ (1!b;) を調べ、行末 ($) を探して、必要な文字列に置き換えます。