次の構文は出力1を出力します。
echo "$status"
出力1:
component_name : TEZ_CLIENT recovery_enabled : true
component_name : WEBHCAT_SERVER recovery_enabled : true
component_name : YARN_CLIENT recovery_enabled : true
component_name : ZKFC recovery_enabled : true
component_name : ZOOKEEPER_CLIENT recovery_enabled : true
component_name : ZOOKEEPER_SERVER recovery_enabled : true
次の行を取得するためにprintf構文を追加するにはどうすればよいですか?
期待される出力
component_name : TEZ_CLIENT recovery_enabled : true
component_name : WEBHCAT_SERVER recovery_enabled : true
component_name : YARN_CLIENT recovery_enabled : true
component_name : ZKFC recovery_enabled : true
component_name : ZOOKEEPER_CLIENT recovery_enabled : true
component_name : ZOOKEEPER_SERVER recovery_enabled : true
ベストアンサー1
echo "$status" | awk '{printf("%s %s %-20s %20s %s %s\n", $1, $2, $3, $4, $5, $6)}'
生産します
component_name : TEZ_CLIENT recovery_enabled : true
component_name : WEBHCAT_SERVER recovery_enabled : true
component_name : YARN_CLIENT recovery_enabled : true
component_name : ZKFC recovery_enabled : true
component_name : ZOOKEEPER_CLIENT recovery_enabled : true
component_name : ZOOKEEPER_SERVER recovery_enabled : true
この%-20s
形式は、左揃え文字列に対して20文字を予約し、右揃え%20s
文字列に対して20文字を予約します。20
希望のフォーマットに合わせてsを調整します。
この質問の以前のバージョンでは、をsed
使用してフィルタリングしてさまざまな変換を実行しましたgrep
。これはawk
同じスクリプトのソースファイルから直接行うこともできます。または、ファイルがJSONファイルの場合(コメントで述べたように)、jq
同じファイルから直接。