[解決済み] sed にマッチしない行を無視させる
2022-10-30 02:42:20
質問
どのようにすれば
sed
がマッチする行をある式に従ってフィルタリングし、 マッチしない行は印刷させずに無視するようにするにはどうしたらよいでしょうか?
実際の例として、私は次のように実行したいです。
scalac
(Scala コンパイラ) をファイルの集合に対して実行し,その
-verbose
を出力します。
.class
のファイルが作成されます。
scalac -verbose
はたくさんのメッセージを出力しますが、私たちが関心を持つのは、以下の形式のものだけです。
[wrote some-class-name.class]
.
現在私がやっているのは、このようなものです (
|&
はbash 4.0の方法で、標準エラー出力を次のプログラムにパイプするものです)。
$ scalac -verbose some-file.scala ... |& sed 's/^\[wrote \(.*\.class\)\]$/\1/'
これは、興味のあるメッセージからファイル名を抽出しますが、他のすべてのメッセージは変更せずに通過させます! もちろん、代わりにこうすることもできます。
$ scalac -verbose some-file.scala ... |& grep '^\[wrote .*\.class\]$' |
sed 's/^\[wrote \(.*\.class\)\]$/\1/'
は動作しますが、本当の問題を回避しているように見えます。
sed
に、入力からマッチしない行を無視するように指示する方法です。では、どうすればいいのでしょうか?
どのように解決するのか?
プレーンセッドによる別の方法です。
sed -e 's/.../.../;t;d'
s///
は代入です。
t
は条件付きで以下の全てのコマンドをスキップする。
d
は行を削除します。
perlやgrepは必要ありません。
(Nicholas Rileyの提案を受けて編集)
関連
-
[解決済み】sedが "unknown option to `s'"エラーで失敗しました【終了しました
-
[解決済み] sedでシングルクォートをエスケープするには?
-
[解決済み] sedで非欲張り(消極的)な正規表現マッチング?
-
[解決済み] テキストファイルから、特定の文字列を含むすべての行を削除するにはどうすればよいですか?
-
[解決済み] sedで改行をスペースに置き換えるには?
-
[解決済み] sedによる空行の削除
-
[解決済み】bash/sedスクリプトを使用してテキストファイルの最初の行を削除するにはどうすればよいですか?
-
[解決済み】複数のファイルを変更する
-
[解決済み】sedとawkの違いは何ですか?[クローズド]
-
[解決済み] sed で末尾の空白を削除するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン