49

特定の行を追加したいのですが、ファイルの 15 行目に追加する必要があるファイルavatarについて説明します。MakeFileavatar

ファイルにテキストを追加する方法は次のとおりです。

echo 'avatar' >> MakeFile.websvc

そして、これは MakeFile で始まるファイルにテキストを追加する方法だと思います:

echo 'avatar' >> *MakeFile.

しかし、この行をファイルの 15 行目に追加することはできません。

4

5 に答える 5

88

sedこれを解決するために使用できます:

sed "15i avatar" Makefile.txt

または、-iオプションを使用して、ファイルに加えた変更を保存します。

sed -i "15i avatar" Makefile.txt

start で始まるすべてのファイルを変更するにはMakefile:

sed "15i avatar" Makefile*

注: 上記15は、テキストを配置する目的の行です。

于 2013-03-01T12:33:11.317 に答える
3

sedの使用:

sed -i '15i\avatar\' Makefile*

ここで、-iオプションは、変換がインプレースで行われることを示します(これは、たとえば、複数のファイルを処理する場合に役立ちます)。

また、あなたの質問では、* MakeFileは'MakeFileで終わるすべてのファイル'を表し、'MakeFileで始まるすべてのファイル'はMakeFile*として示されます。

于 2013-03-01T12:39:30.977 に答える
3

文字列と行番号オプションをスクリプトに渡す必要がある場合は、次を試してください。

perl -i -slpe 'print $s if $. == $n; $. = 0 if eof' -- -n=15 -s="avatar" Makefile*

-i入力ファイルを編集します。バックアップ コピーは作成しません
$.。行番号です。

これは、 sed または awk を使用して特定の行番号に行を挿入するという私の解決策に基づいています。これには、Perl にオプションを渡す他のいくつかの方法と、コマンド ライン オプションの説明が含まれています。

于 2015-09-11T22:11:04.990 に答える
2

より移植性の高いバージョンが必要な場合は、任意の*Nix システムexで動作する を使用できます。( POSIX で規定されています。 ) これまでに与えられた Sed コマンドは、GNU Sed に依存しています。

名前が「Makefile.」で始まる現在のディレクトリ内の各ファイルの 15 行目に「avatar」のみを含む行を挿入するには、次のようにします。

for f in MakeFile.*; do printf '%s\n' 15i 'avatar' . x | ex "$f"; done
于 2016-10-28T04:10:16.973 に答える
1
perl -pi -e 'if($.==14){s/\n/\navatar\n/g}if(eof){$.=0}' MakeFile*
于 2013-03-01T12:33:21.147 に答える