ファイルの10〜20行の先頭にed
put文字を使用します。解決策は次のとおりです。#
/etc/passwd
ed /etc/passwd <<\END
10,20s/^/#/
%p
Q
END
私の質問は<<
ここと\
以前の意味が何でEND
あり、私たちがそれを使用するのはなぜですか?私たちはいつもそれを使うべきですか?
ベストアンサー1
あなたが示したものはed
編集スクリプトで動作します。
編集スクリプト(一連のコマンド)がed
ここに文書に渡されます。ed
ここでは、ドキュメントは複数行のテキストです。リダイレクトユーティリティの標準入力を入力します。ここでは、END
最初のタグと最後のタグの間にあります。\
前の最初のトークンはドキュメントEND
が参照されることを意味し、これはシェルがドキュメント内の変数などを拡張しようとしないことを意味します。と書くこともできます<<'END'
。この特別な場合には、\
編集スクリプトにシェル拡張のための内容が含まれていないため、削除が可能です。
ed
これはより簡単な非対話型編集の一般的な方法ですが、ed
この方法で使用する場合は、そのオプションと一緒に使用する必要があります。-s
このコマンドの効果は、次のようsed
に使用するのと同じです。
sed '10,20/^/#/' /etc/passwd
(ed
スクリプトはファイルを変更し、終了する前に端末にファイルを表示します。いいえ変更を保存します。これはsed
、上記のスクリプトが1行ずつ実行する操作と似ています。
これはいいえそれでもファイルを編集するのは良い方法です/etc/passwd
(ed
幸いなことに、スクリプトは変更を保存しないので実際には行いません)。これを行うには、vipw
このファイルを変更するためのツールまたは特定のコマンド(など)を使用する必要があります。useradd
これは、多くのUnixシステムでは、ファイルを1つ以上の他のファイルまたはデータベースと同期させる必要があり、編集するにはそのファイルを更新(vipw
自動更新など)する必要があるためです。