ファイル内の文字列を見つけて保存するbash正規表現

ファイル内の文字列を見つけて保存するbash正規表現

私のファイルにはhi.htmlテキスト行がたくさんあります。見つけなければなりません

Hello abc123 blah blah blah

その後、場所は随時変更されますが、ハードコードされ、常に「Hello」というmyvariableテキストを保存します。スペースはすべての重要なテキストの側面を区別します。abc123Helloabc123

ベストアンサー1

まず、義務的な警告です。通常とても悪い考えです。正規表現などの簡単なツールを使用してHTMLを解析します。つまり、この場合、目的の内容が常にで始まる行の2番目の単語であると確信している場合は、次のいずれHelloかを使用できます。

  1. 牛に似た一種の栄養grep

    grep -oP '^Hello\s+\K\S+'
    

    grepこれは、Perl準拠の正規表現(regex -P)を使用して-o行の一致部分のみを印刷するように指定することによって行われます。正規表現自体はを検索Helloし、1つ以上の空白文字(\s+)を見つけ、それを削除し(\K)、空白ではなく1つ以上の文字()を探します\S+

  2. アッ

    awk '$1=="Hello"{print $2}' file
    

    awk入力行をスペースに自動的に分割します。最初のフィールドは$1、2番目のフィールド$2はです。したがって、最初のフィールドがある場合、このスクリプトは2番目のフィールドを印刷しますHello。一致しませんのでご注意くださいHelooo。最初の行がすべて必要な場合数値Hello必ずしも最初の単語があるだけではなく、代わりにHello以下を使用してください。

    awk '/^Hello/{print $2}' file
    

どちらの方法でも出力を変数に保存するには、次のようにします。コマンドの置き換え:

myvariable=$(grep -oP '^Hello\s+\K\S+')
myvariable=$(awk '/^Hello/{print $2}' file)

おすすめ記事