vi や nano などのエディタを使用せずに、構成ファイルを UnixCommandline に置き換えようとしています。
例は次のとおりです。
ServerAdmin mail@example.com
で始まる最初またはすべての行を見つけて、次のようServerAdmin
に置き換えたい:
ServerAdmin secret@secret.com
このようなことをするコマンドはありますか?CygWinでも利用できる標準のUNIXツールで可能です。
sed -i 's/^ServerAdmin .*$/ServerAdmin secret@secret.com/' in-filename
これまでの答えはすべて正しいですが、perlワンライナーを使用してこれを行うこともできます
perl -p -i -e 's/ServerAdmin/ServerAdmin secret@secret.com/g' your_file_name
awk
次のトランスクリプトに従って、これを行うために使用できます。
pax> echo 'xyzzy plugh
ServerAdmin mail@example.com
twisty passages' | awk '
/^ServerAdmin /{$0 = "ServerAdmin secret@secret.com"}{print}'
xyzzy plugh
ServerAdmin secret@secret.com
twisty passages
つまり、そのawk
コマンドを介してファイルをパイプします。で始まる行を検索し"ServerAdmin<space>"
、印刷する前にそれらの行を変更します。パターンに一致しない行はすべてそのまま印刷されます。
明らかに、それは指定された単純なケース用です。入力フォーマットがより複雑であることが判明した場合は、それを調整する必要があるかもしれませんが、awk
それでもタスクをこなす必要があります。
また、出力を標準出力ではなく新しいファイルにキャプチャする場合は、次を使用してください。
awk 'above awk command goes here' currentFile >newFile