という名前のファイルがあります.ignore
。を交換する必要がありprojdir
ます。例えば:
ignore \..*
ignore README
projdir Snake
Snakeを「PacMan」などに置き換える必要があります。manページを読みましたが、どうすればよいかわかりません。
という名前のファイルがあります.ignore
。を交換する必要がありprojdir
ます。例えば:
ignore \..*
ignore README
projdir Snake
Snakeを「PacMan」などに置き換える必要があります。manページを読みましたが、どうすればよいかわかりません。
回答:
で始まる行を検索し、行projdir
全体を新しい行で置き換えます。
sed -i 's/^projdir .*$/projdir PacMan/' .ignore
^
および$
行の始まり/終わりのマーカーなので、パターンは行全体に一致します。.*
何にでもマッチします。-i
伝えsed
に直接変更を書き込むために.ignore
ちょうどそれらを出力するのではなく、
1つのアプローチは、保持したい部分の後方参照を使用して、行全体を書き直すことです。
sed -e 's/^\( *projdir *\)[^ ]*\(.*\)*$/\1PacMan\2/'
別のアプローチは、行のその部分を書き換えることですが、他の部分が一致する場合のみです。
sed -e '/^ *projdir / s/ [^# ]/ PacMan/'
どちらの例も、最初の単語がである行の空白で区切られた2番目の単語を書き換えprojdir
ます。
sed -i 's:^projdir.*$:projdir PacMan:g' .ignore
^ projdirは、文字列projdirで始まる行を検索します。。* $は、同じ行のprojdirの後の文字列を表します。文字列projdir PacManは、置き換える文字列です。gはグローバルです。projdirで始まるすべての行を置き換えます。.ignoreはファイルの名前です