1. ホーム
  2. アッキー

[解決済み】awk で複数のデリミタを使用する場合

2022-04-03 02:31:11

質問

次のような行を含むファイルがあります。

/logs/tc0001/tomcat/tomcat7.1/conf/catalina.properties:app.env.server.name = demo.example.com
/logs/tc0001/tomcat/tomcat7.2/conf/catalina.properties:app.env.server.name = quest.example.com
/logs/tc0001/tomcat/tomcat7.5/conf/catalina.properties:app.env.server.name = www.example.com

上記の出力で、3つのフィールド(2番、4番、最後の1番)を抽出したい。 *.example.com ). 以下のような出力が得られます。

cat file | awk -F'/' '{print $3 "\t" $5}'
tc0001   tomcat7.1
tc0001   tomcat7.2
tc0001   tomcat7.5

の後にあるドメイン名を含む最後のフィールドも抽出するにはどうすればよいですか? '=' ? どのように multiple delimiter を使用してフィールドを抽出できますか?

解決方法は?

デリミタに正規表現を使用することができます。

awk -F'[/=]' '{print $3 "\t" $5 "\t" $8}' file

プロデュースします。

tc0001   tomcat7.1    demo.example.com  
tc0001   tomcat7.2    quest.example.com  
tc0001   tomcat7.5    www.example.com