Como posso adicionar uma string ao primeiro campo da saída com o awk?

1

O script a seguir imprime a saída:

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

A saída do script:

 "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"

Eu quero adicionar com o pipeline o awk ou perl oneline linear, o yarn-env no primeiro campo de saída como o seguinte: (resultados esperados)

/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"
    
por yael 18.08.2017 / 13:35

2 respostas

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

Este pequeno script awk pré-anexará a string yarn-env a cada linha de entrada do seu comando. O delimitador usado é o awk variable OFS ("separador de campo de saída", um único espaço por padrão), portanto, se você quiser uma tabulação entre os dois, use

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

Como alternativa, use sed :

/var/lib/ambari-server/resources/scripts/configs.sh get localhost c1 yarn-env |
sed 's/^/yarn-env /'
    
por 18.08.2017 / 13:40
0

Aqui está uma maneira com perl:

perl -pe 's/^/yarn_env /'

Como você deve saber, TIMTOWTDI.

    
por 18.08.2017 / 16:22