[解決済み] sedでキャプチャしたグループのみを出力するには?
2022-03-17 11:25:34
質問
を指定する方法はありますか?
sed
キャプチャしたグループのみを出力するようにできますか?
例えば、入力があった場合。
This is a sample 123 text and some 987 numbers
そしてパターン。
/([\d]+)/
バックリファレンスでフォーマットされた方法で123と987だけを出力させることは可能でしょうか?
解決方法は?
これを動作させるための鍵は
sed
は、出力させたくないものを除外し、出力させたいものを指定します。
string='This is a sample 123 text and some 987 numbers'
echo "$string" | sed -rn 's/[^[:digit:]]*([[:digit:]]+)[^[:digit:]]+([[:digit:]]+)[^[:digit:]]*/\1 \2/p'
ということが書かれています。
-
は、各行を印刷することをデフォルトにしないでください (
-n
) - 0以上の非桁を除外する
- 1つ以上の数字を含む
- 1つまたは複数の数字以外を除外する
- 1つ以上の数字を含む
- 0以上の数字以外を除外する
-
置換を表示する (
p
)
一般に
sed
は、括弧を使ってグループを捕捉し、捕捉したものをバックリファレンスを使って出力します。
echo "foobarbaz" | sed 's/^foo\(.*\)baz$/\1/'
は "bar" を出力します。もし
-r
(
-E
OS Xの場合)拡張正規表現では、括弧をエスケープする必要はありません。
echo "foobarbaz" | sed -r 's/^foo(.*)baz$/\1/'
キャプチャーグループとそのバックリファレンスは最大9個まで可能です。後方参照はグループが現れる順番に番号が振られていますが、どのような順番でも使用でき、繰り返し使用することも可能です。
echo "foobarbaz" | sed -r 's/^foo(.*)b(.)z$/\2 \1 \2/'
は "a bar a" を出力します。
もし、あなたがGNU
grep
(OSXを含むBSDでも動作する場合があります)。
echo "$string" | grep -Po '\d+'
などのバリエーションがあります。
echo "$string" | grep -Po '(?<=\D )(\d+)'
は
-P
オプションは Perl Compatible Regular Expressions を有効にします。参照
man 3 pcrepattern
または
man
3 pcresyntax
.
関連
-
[解決済み] | の後をすべて削除する正規表現 (| と共に)
-
[解決済み] 正規表現の主題文字列で空白を無視するには?
-
[解決済み] 正規表現における角括弧と括弧の違いは何ですか?
-
[解決済み] TCL/EXPECTで$expect_outを使用して変数を割り当てるにはどうすればよいですか?
-
[解決済み] JavaScriptの正規表現でマッチしたグループにアクセスするにはどうすればよいですか?
-
[解決済み] sedで改行をスペースに置き換えるには?
-
[解決済み】bash/sedスクリプトを使用してテキストファイルの最初の行を削除するにはどうすればよいですか?
-
[解決済み】sedでパターンに基づいたテキストを一度に入れ替えるには?
-
[解決済み】キャプチャしたグループのみを置き換えるには?
-
[解決済み】Regexで一部のグループのみを置換する。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】REエラー:Mac OS Xでの不正なバイトシーケンス
-
[解決済み] 正規表現でのコロン記号の使用
-
[解決済み] 正規表現です。+$ VS *$ VS なし
-
[解決済み] | の後をすべて削除する正規表現 (| と共に)
-
[解決済み] ColdFusion を使用して XML 文字列から余分なホワイトスペースをすべて削除するにはどうすればよいですか?
-
[解決済み] 正規表現[^ΘdΘs]と[ΘdΘs]の違いは何ですか?
-
[解決済み] 文字列の完全一致のための正規表現
-
[解決済み] Regex for string contains?
-
[解決済み】Grep RegExからグループをキャプチャする
-
[解決済み】md5sumでハッシュ値のみ取得(ファイル名なし)。