
このファイル (output.txt) があります:
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 を使用した 1 つの可能な回答:
cat input | awk '/name: /{name=substr($0,7)} /count: /{cnt=substr($0,8)} /region:/{print name" "cnt" "substr($0,9)}'
答え2
awk '/^(name|count|region):/{
sep = (/^region/? ORS : OFS);
gsub(/^[^:]+:[[:space:]]*|[[:space:]]*$/, "");
printf "%s%s", $0, sep
}' file.txt
@RomanPerekhrest に感謝します