特定の文字列に対して複数の列の後の値を取得する

特定の文字列に対して複数の列の後の値を取得する

次のファイルがあります(vimからコピー)。

name: some name^M
^M
count: 1^M
^M
region: some_region
name: some name^M
^M
count: 2^M
^M
region: some_region^M
^M
name: some name^M
^M
count: 1^M
^M
region: some_region^M
^M

Testing Powershell scripts execustions from Rundeck server against Windows server

名前、数、面積の後の値のみを取得する方法

希望の出力:

some name 1 some region
some name 2 some region
some name 1 some region

そして grep -E 'name|count|region' output.txt | sed 's/^.*: //'

私は持っています

some name
1
some_region
some name
2
some_region
some name
1
some_region

複数の列を生成する方法は?

ベストアンサー1

Awk解決策:

awk '/^(name|count|region):/{
         sep = (/^region/? ORS : OFS);
         gsub(/^[^:]+:[[:space:]]*|[[:space:]]*$/, "");
         printf "%s%s", $0, sep 
     }' file.txt

出力:

some name 1 some_region
some name 2 some_region
some name 1 some_region

おすすめ記事