回答:
そこsed
から遊び始めます。sed
コマンドはこの形式になります。
[pattern1][,pattern2][!] command [args]
正規表現を使用しているため、少し難しくなる場合があります。以下の2番目のリンクから抜粋したいくつかの基本的な例:
#各行で「foo」を「bar」に置換(検索および置換) sed 's / foo / bar /'#行の最初のインスタンスのみを置き換えます sed 's / foo / bar / 4'#行の4番目のインスタンスのみを置換 sed 's / foo / bar / g'#行のすべてのインスタンスを置換 sed 's / \(。* \)foo \(。* foo \)/ \ 1bar \ 2 /'#最後から2番目のケースを置換 sed 's / \(。* \)foo / \ 1bar /'#最後のケースのみを置換 #「baz」を含む行のみ「foo」を「bar」に置換 sed '/ baz / s / foo / bar / g' #「baz」を含む行を除き、「foo」を「bar」に置換 sed '/ baz /!s / foo / bar / g' #「スカーレット」または「ルビー」または「プース」を「赤」に変更 sed 's / scarlet / red / g; s / ruby / red / g; s / puce / red / g'#ほとんどのsed gsed 's / scarlet \ | ruby \ | puce / red / g'#GNU sedのみ
いくつかの参照
非常に遅い答え。ただし、これは同様の問題/疑問を持つ他の人を助けるかもしれません。
パッチを作成して適用することをお勧めします。良い例が ここにあります。
たとえば、new.txtファイルに、old.txtに適用する変更が含まれているとします。端末でコマンドを実行するか、patch_file.shを作成して実行することができます。
コマンドライン:ターミナルを開き、以下の行をコピーして実行します(必要に応じてファイル名を変更します):
diff old.txt new.txt > patch.patch # to create the patch
patch old.txt -i patch.patch -o patched_old.text # to apply patch
スクリプト:.shファイルアプローチを使用します。ターミナル内(キーボード:ctrl + alt + t:
gedit patch_file.sh
以下に示すように、ターミナルで使用するコマンドをコピーして、.shファイルのヘッダーの下に貼り付けます(gedit)。
#!/bin/sh
diff old.txt new.txt > patch.patch # to create the patch
patch old.txt -i patch.patch -o patched_old.text # to apply patch
スクリプトを実行可能にします(端末):
chmod +x patch_file.sh
スクリプト(端末)を実行します。
./patch_file.sh # may require sudo access depending on the directory affected
sedまたはawkを探しています。sedはよりシンプルで、awkはより強力であると思います。
別の質問の例を次に示します。
sed -i 's/gedit.desktop/yournew.desktop/g' /usr/share/applications/defaults.list
これの意味は:
/usr/share/applications/defaults.list
gedit.desktop
yournew.desktop
-i
あなたが精通している場合は、編集に必要なものに応じて、vi
その後、ed
有用である可能性があります。