awkを使用して出力の最初のフィールドに文字列を追加するには?

awkを使用して出力の最初のフィールドに文字列を追加するには?

次のスクリプトは出力を印刷します。

/var/lib/ambari-server/resources/scripts/configs.sh get localhost c1 yarn-env

スクリプト出力:

 "yarn_log_dir_prefix" : "/var/log/hadoop-yarn",
 "yarn_pid_dir_prefix" : "/var/run/hadoop-yarn",
 "yarn_user" : "yarn",
 "yarn_user_nofile_limit" : "32768",
 "yarn_user_nproc_limit" : "65536"

パイプライン awk または perl oneline 線形を追加したいと思います。糸環境出力の最初のフィールドには以下が含まれます。 (予想結果)

/var/lib/ambari-server/resources/scripts/configs.sh get localhost c1 yarn-env | awk ...


yarn-env  "yarn_log_dir_prefix" : "/var/log/hadoop-yarn",
yarn-env  "yarn_pid_dir_prefix" : "/var/run/hadoop-yarn",
yarn-env  "yarn_user" : "yarn",
yarn-env  "yarn_user_nofile_limit" : "32768",
yarn-env  "yarn_user_nproc_limit" : "65536"

答え1

/var/lib/ambari-server/resources/scripts/configs.sh get localhost c1 yarn-env |
awk '{ print "yarn-env", $0 }'

この短いスクリプトは、コマンド入力の各行の前にawk文字列を追加します。yarn-env使用される区切り文字はawk変数OFS(「出力フィールド区切り文字」、デフォルトでは単一のスペースです)なので、間にタブ文字を追加するには、次のようにします。

/var/lib/ambari-server/resources/scripts/configs.sh get localhost c1 yarn-env |
awk -vOFS="\t" '{ print "yarn-env", $0 }'

または以下を使用してくださいsed

/var/lib/ambari-server/resources/scripts/configs.sh get localhost c1 yarn-env |
sed 's/^/yarn-env /'

答え2

Perlを使用してこれを行う1つの方法は次のとおりです。

perl -pe 's/^/yarn_env /'

ご存知のように、TIMTOWTDI。

関連情報