0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

grepとsedで文字列抽出

Posted at

下記のコマンドのように、grepとsedで文字列抽出する方法を解説します

# コマンド
ll .. | grep admin | sed -n 's/.*sudo\(.*admin\).*/\1/p'
# 以下が出力例
_as_admin

コマンドの解説

*ll .. | grep admin | sed -n 's/.sudo(.admin)./\1/p'

このコマンドは、Linux/Unix系OS上で、カレントディレクトリの親ディレクトリ(..)にあるファイルやディレクトリの一覧から、"admin"という文字列を含む行を抽出し、さらにその行から特定の文字列を抜き出すという処理を行います。

各部分の役割

  • ll ..:

    • llls -l のエイリアスで、ディレクトリの内容を詳細に表示するコマンドです。
    • .. は親ディレクトリを指します。
    • つまり、この部分で親ディレクトリの内容を長形式で表示します。
  • | grep admin:

    • | はパイプで、前のコマンドの出力(ll .. の結果)を次のコマンドの入力として渡します。
    • grep admin は、前のコマンドの出力から"admin"という文字列を含む行だけを抽出します。
  • *| sed -n 's/.sudo(.admin)./\1/p'

    • sed はストリームエディタで、テキストストリームを編集するためのコマンドです。
    • -n オプションは、パターンが一致した場合のみ行を出力するように指定します。
    • 's/.*sudo\(.*admin\).*/\1/p' は置換コマンドで、以下のことを行います。
      • s:置換コマンドの開始
      • .*sudo\(.*admin\).*:正規表現で、"sudo"という文字列の後に任意の文字列((.*)でキャプチャ)、そして"admin"という文字列が続くパターンにマッチします。
      • \1:正規表現でキャプチャした部分(つまり、"sudo"と"admin"の間の部分)を置換後の文字列として使用します。
      • p:置換後の行を出力します。

全体的な処理の流れ

  1. 親ディレクトリの内容を詳細に表示する。
  2. 表示された内容から"admin"という文字列を含む行を抽出する。
  3. 抽出された行から、"sudo"と"admin"の間の部分だけを抜き出して表示する。

このコマンドで得られる情報

このコマンドを実行すると、通常はファイルのパーミッション、所有者、グループ、サイズなどが表示されますが、このコマンドではさらに絞り込みが行われ、"admin"という文字列が含まれ、かつ"sudo"という文字列の後に"admin"という文字列が続くような行から、その間の部分(おそらくユーザー名やグループ名)だけが表示されます。

使用例

  • 目的: 親ディレクトリにあるファイルやディレクトリの中で、"admin"という文字列が含まれ、かつそのファイルの所有者またはグループ名が"admin"であるものを探したい。
  • 結果: "admin"という文字列を含む行が複数ある場合、それぞれの行から"sudo"と"admin"の間の部分(ユーザー名またはグループ名)が1行ずつ表示されます。

注意点

  • 正規表現の書き方によって、抽出される情報が変わる場合があります。
  • sed コマンドは強力なツールですが、複雑な処理を行う場合は、正規表現の知識が必要になります。

まとめ

このコマンドは、特定の文字列を含む行から、さらに特定の部分を抜き出すという、テキスト処理の典型的な例です。Linux/Unix系OSのシェルスクリプトなどで、このような処理を組み合わせて複雑な処理を行うことができます。

より詳しい説明が必要な場合は、お気軽にご質問ください。

例:

  • 「正規表現の.の意味が分かりません」
  • \1とは何ですか?」
  • 「もっと具体的な使用例を教えてください」

補足:

  • このコマンドは、ファイルのパーミッションや所有者などを調べるために、ls -l の出力をパースしているようなものです。
  • より正確な情報を取得するためには、find コマンドや awk コマンドを使うこともできます。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?