web-dev-qa-db-ja.com

CLIからファイルの特定の行に文字列を挿入できますか?

ファイルの内容は次のとおりです。

[Greet]

Hello
Hi
Hola

Heyという文字列を追加して、その位置がHelloの後にくるようにします。

[Greet]

Hello
Hey
Hi
Hola

コマンドラインからechoまたは他のネイティブLinuxツールを使用して上記を行う方法はありますか?

2
Thierry Lam

sedを使用します。

行を挿入または追加するためのsedコマンドには改行が必要なため、ファイルにsedコマンドを配置し、そのファイルを実行するようにsedに指示するのが最も簡単です。

例:(すべての)Heyの後にHelloを挿入するには、次のファイルを作成します。

/Hello/a\
Hey

次に、sedを呼び出します。

sed -f appendheyafterhello.sed < sourcefile > resultfile

Here は、行の挿入方法を含むsedコマンドですbeforeパターンまたは特定の行番号。

3
lesmana

ここにいくつかのPerlソリューションがあります:

Perl -p -i -e 'print "Hey\n" if /Hi/'  filename

または

Perl -p -i -e 'print "Hey\n" if $. == 4'  filename

または

Perl -n -i -e 'print; print "Hey\n" if /Hello/' filename
0
RedGrittyBrick