私はsed
最近しばらく勉強していますが、とても恥ずかしいです。
- 単一文字コマンド(
p
、、、、…)を覚えておく必要がありますa
。d
- コンセプト一つスペアスペースコンテキストを記憶するために使用 - 他の同様のコマンド(、、、、
h
... )で制御されますx
g
私は自分にこう言いました。これはもっと直感的ではないでしょうか?つまり、より詳細なコマンド(例:print
代わりにp
)を使用するなど一つバッファ – 私の必要に応じて標準変数(例えば)lastUserSeen
?
だから誰か教えてください:
いいえ、いいえ
h
s、g、p(-nを含む)以外の他のsed構成を使用したり、実際に1970年代半ばにawkが発明されたときに役に立たなかった構成を使用しています。今日、人々は真剣にソフトウェアを書くのではなく、知的な練習のためにこれらの他の構造を使用しています。これは、同等のawkソリューションがよりクリーンで、より効率的で、より移植性が高く、メンテナンス/強化が容易で、他のすべての意味のある方法が優れているためです。
え?私はすぐにそれに飛び込み、それと恋に落ちた。複数行のプログラムの多くは、デバッグなしで最初に実行されたときに機能します。 awkの後の研究は、awkがsedを完全に置き換えることができると思います。またはawkでは簡単に達成できない効果があるいくつかのsed機能(私が逃した)がありますか?awkユーザーがsedを実行する理由はありますか?
編集:これは「どちらが良いか」に関する質問ではなく、機能セットの比較です。 awkで同じように効率的に実装することはできませんが、より多くのawkコードを必要とする機能はsedにありますか?
答え1
適切なファイルをすばやく簡単に編集するには、sed
同様のものを作成するよりも-i機能を使用する方がはるかに簡単ですawk
。gawk
バージョン1.4.0以降を使用するプラットフォームには、この問題を解決できる「現在の場所」機能があることを認識してください。
sed -i 's/foo/bar/' filename
sed
既存のすべてのスクリプトがそれを使用しているので、間違いなく学びました。選択の余地があれば、新しいスクリプトを書くときにawk
通常勝つことになり、コードははるかに読みやすくメンテナンスが簡単です。