2017-10-05 1 views
0

Quelqu'un peut-il me aider à ce J'ai une variable qui contiennentRetirez tout le hachage valeur de teradata dans unix

var="DDP_COMPLIANCE ,ONT_COMPLIANCE_CD --,TECHNICIAN_EMPLOYEE_ID --,ENTRY_OPERATOR_EMPLOYEE_ID --,LAST_UPDATE_OPERATOR_EMPLOYEE_ID ,PARENT_TROUBLE_CALL_WORK_ORDER_ID --,abc_line ,PARENT_INSTALL_WORK_ORDER_ID ,TECH_COMPLIANCE_STARTBY_TS " 

je veux supprimer tous les « -, columnname » et de repos d'impression

et la sortie sera

DDP_COMPLIANCE ,ONT_COMPLIANCE_CD,PARENT_TROUBLE_CALL_WORK_ORDER_ID ,PARENT_INSTALL_WORK_ORDER_ID ,TECH_COMPLIANCE_STARTBY_TS 

je suis en utilisant la commande Sed comme

echo $var | sed 's/--.*,/,/' 

mais a obtenu la sortie comme

DDP_COMPLIANCE ,ONTRAC_COMPLIANCE_CD ,TECH_COMPLIANCE_STARTBY_TS 

qui est incorrect

Répondre

0

Je suis sûr qu'il ya un moyen simple, mais pour instant, cela fonctionne pour vous?

echo $var | awk '{ for (i=1; i<=NF; i++) print $i }' | grep -v "^--" | awk 'BEGIN { ORS=" " }; { print $0 }' 

la dernière partie awk était de formater le résultat de retour dans une seule ligne.

Résultat:

$ echo $var | awk '{ for (i=1; i<=NF; i++) print $i }' | grep -v "^--" | awk 'BEGIN { ORS=" " }; { print $0 }' 
DDP_COMPLIANCE ,ONT_COMPLIANCE_CD ,PARENT_TROUBLE_CALL_WORK_ORDER_ID ,PARENT_INSTALL_WORK_ORDER_ID ,TECH_COMPLIANCE_STARTBY_TS