コマンド
文字列b〜文字列eまでを取り出したい場合
awk '{print substr($0, index($0, "b"), index($0, "e") - index($0, "b") + 1)}'
以下、補足です。
補足
以下の記事でhtmlからカテゴリーを取得するために試行錯誤していたのですが
カテゴリ情報は
</p>....({"article_category": "Python,機械学習"})</script>... ......
といったように長い一行の中に
{"article_category":"カテゴリ名1,カテゴリ名2,カテゴリ名3"}
といった構造で格納されていました。
パーサーを使わずに取り出すには「"article_category"」というキーワードに絡めて抽出する必要があります。
そんな中で便利なのが冒頭のワンライナー
awk '{print substr($0, index($0, "b"), index($0, "e") - index($0, "b") + 1)}'
です。
文字列全体($0)の中で"b"で始まり"e"の箇所までを抜き出します。
例えば以下のように出力されます。
$ echo abcdefg | awk '{print substr($0, index($0, "b"), index($0, "e")-index($0, "b") + 1)}' bcde
ただし、
abcabcdefgといった文字列では最初のbが反応してしまいます。
ご注意ください。
echo abcabcdefg | awk '{print substr($0, index($0, "b"), index($0, "e")-index($0, "b") + 1)}' bcabcde