特定の行を追加したい場合、avatar
で始まるファイルにMakeFile
を付けて、avatar
をファイルの15行目に追加する必要があるとします。
これは、ファイルにテキストを追加する方法です。
echo 'avatar' >> MakeFile.websvc
これは、MakeFileで始まるファイルにテキストを追加する方法です。
echo 'avatar' >> *MakeFile.
しかし、この行をファイルの15行目に追加することはできません。
sed
を使用してこれを解決できます。
sed "15i avatar" Makefile.txt
または、-i
オプションは、ファイルに加えられた変更を保存します。
sed -i "15i avatar" Makefile.txt
Makefile
で始まるすべてのファイルを変更するには:
sed "15i avatar" Makefile*
注:上記の15
は、テキストを配置する対象の行です。
Sedの使用:
sed -i '15i\avatar\' Makefile*
-iオプションは、変換がインプレースで行われることを示します(複数のファイルを処理する場合などに便利です)。
また、あなたの質問では、* MakeFileは「MakeFileで終わるすべてのファイル」を表し、「MakeFileで始まるすべてのファイル」はMakeFile *と表示されます。
文字列と行番号オプションをスクリプトに渡す必要がある場合は、これを試してください。
Perl -i -slpe 'print $s if $. == $n; $. = 0 if eof' -- -n=15 -s="avatar" Makefile*
-i
入力ファイルを編集します。バックアップコピーは作成しません$.
は行番号です
これは、 sedまたはawkで特定の行番号に行を挿入 に対する私のソリューションに基づいています。
より移植性の高いバージョンが必要な場合は、ex
を使用できます。これはany* Nixシステムで動作します。 (これは POSIXで指定 )Sedこれまでに与えられたコマンドは、GNU Sed。
「Makefile。」で始まる名前の現在のディレクトリ内の各ファイルの15行目に「アバター」以外の何も含まない行を挿入するには、次を使用します。
for f in MakeFile.*; do printf '%s\n' 15i 'avatar' . x | ex "$f"; done
Perl -pi -e 'if($.==14){s/\n/\navatar\n/g}if(eof){$.=0}' MakeFile*