GNU/Linux >> Linux の 問題 >  >> Linux

カスタム正規表現区切り文字を使用してパターンを含む行番号を見つけますか?

例のように、パターンを含む行番号を取得しようとしています。パターンにスラッシュが含まれているため、カスタム区切り文字を追加したいと思いました。

この単純なものは機能します:

sed -n '/file/=' temp.txt

文字列置換に区切り文字を使用することも機能します:

sed 's|file|gile|' temp.txt

ただし、最初の例に区切り文字を追加したい場合は、次のようにはなりません。

sed -n '|file /etc|=' temp.txt

スラッシュをエスケープできることはわかっていますが、カスタム区切り文字を追加したいと思います。コマンドを修正する方法はありますか?

承認された回答:

Stéphaneはあなたにsedを与えました 解決策:

sed -n  '|file /etc|=' file 

他のツールを使用することに慣れている場合は、それも可能です

grep -n 'file /etc' file

行番号だけを取得するには、行自体も印刷されます。

grep -n 'file /etc' file | cut -d: -f 1

または、perlを使用できます :

perl -lne 'm|file /etc| && print $.' file 

またはawk

awk '$0 ~ "file /etc" {print NR}'

Linux
  1. Sedテキストエディタの使い方を学ぶ

  2. sedを使用してコマンドラインでテキストを操作する

  3. Sedを使用してパターン範囲間の行を検索および置換

  1. Sed、Awk、またはGrepを使用したマルチラインパターンマッチ?

  2. コマンドラインでパターンを指定したときに再帰的ではないことがわかりますか?

  3. sedにおける「ホールド空間」と「パターン空間」の概念

  1. sed を使用して区切り文字で文字列を分割する

  2. sed を使用してファイルの 1 行目にテキストを挿入するにはどうすればよいですか?

  3. インターネットへの接続に使用しているインターフェイスを確認するにはどうすればよいですか?