![「[...]」を含むパターンの後の最初の単語を抽出します。](https://linux33.com/image/62249/%E3%80%8C%5B...%5D%E3%80%8D%E3%82%92%E5%90%AB%E3%82%80%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E3%81%AE%E5%BE%8C%E3%81%AE%E6%9C%80%E5%88%9D%E3%81%AE%E5%8D%98%E8%AA%9E%E3%82%92%E6%8A%BD%E5%87%BA%E3%81%97%E3%81%BE%E3%81%99%E3%80%82.png)
grep
パターンを一致させた後に最初の単語を抽出しようとすると問題が発生します。
例を示します。
cat test.txt
[profile dev]
xxx
xxx
[profile prod]
xxx
xxx
それでは、「profile」の後にある単語を抽出して最終的に変数に割り当てたいと思います。
grep
試してみましたが、awk
単語だけを抽出できないようです。
grep -oP '(?<=profile\s/)\w+' /test.txt
また、何も返しませんawk
。
awk '/^profile / {print $1}' /text.txt
多分かっこのためかもしれないし、それともよく分からない。提案してもらえますか?
答え1
「profile」という単語がロギングを開始しないため、awkモードは失敗します[profile
が...
awk '/^\[profile/ {gsub(/]/,""); print $2}' test.txt
dev
prod
別の方法は配列をロードすることですsplit
。以下を使用してください。
awk -F'[][]' '/profile/ {p=split($2,profiles," "); print profiles[2]}' test.txt
dev
prod