1. ホーム
  2. shell

[解決済み] ファイル中のある文字列が出現する行番号を表示するには?

2022-03-11 09:22:12

質問

特定の単語があり、その単語がファイルの何行目に表示されているかを調べたいのですが。

これはcのシェルスクリプトで起こっていることです。

行番号を見つけるためにawkを弄ろうとしたのですが、今のところできません。その行番号も変数に代入したいのですが。

どのように解決しますか?

grepの使用

を探すには word を使い、行番号を表示します。 -n オプションで grep :

grep -n 'word' file

これは、行番号とマッチした行の両方を表示します。

awkを使用する

という単語が何行目にあるかを表示します。 word が表示されます。

awk '/word/{print NR}' file

この場合、行番号と word が表示されます。

awk '/word/{print NR, $0}' file

を置き換えることができます。 word を好きな正規表現に置き換えてください。

どのように動作するのか

  • /word/

    を含む行を選択します。 word .

  • {print NR}

    選択された行について、行番号(NRはNumber of the Recordの意味)を表示します。 これを変更して、興味のある情報を表示することができます。 このように {print NR, $0} は、行番号の後に行そのものを表示します。 $0 .

行番号を変数に代入する

コマンド置換を使用する

n=$(awk '/word/{print NR}' file)

シェル変数をパターンとして使用する

探している正規表現が、シェル変数 url :

awk -v x="$url" '$0~x {print NR}' file

そして

n=$(awk -v x="$url" '$0~x {print NR}' file)