Ich habe einige Inhalte in der Datei lists.txt
wie folgt:
abc.com. IN A 10.120.51.95 ;10.40.40.57 ;old 10.20.3.57
;def-mytaxi.com. IN A 10.12.4.9 ;10.40.3.43 ;test
xyz-mytaxi.com. IN CNAME 10.12.4.8 ;10.40.3.53 ;test
Also muss ich diese also in eine andere Datei schreiben
Es sollte jede Zeile vermieden werden, die mit ;
- beginnt2nd row is avoided
Es sollte nur die Zeilen mit IN A
- auswählen.only the 1st row is seletced
Es sollte das Training .
am Ende jeder ersten Spalte entfernen -remove . after abc.com.
Es sollte alle Werte in den ausgewählten Zeilen danach vermeiden. - -therefore only prints abc.com 10.120.51.95
und die endgültige Ausgabe sollte in eine Datei geschrieben werden und so aussehen;
abc.com 10.120.51.95
Also habe ich dieses Skript geschrieben, aber bis auf die 3rd
und die 4th
Schritte funktioniert alles einwandfrei.
Ich erhalte die Ausgabe als:
abc.com. 10.120.51.95 10.40.40.57 old 10.20.3.57
Folgendes habe ich versucht. Kann mir jemand helfen?
awk '/IN A/ {$2=$3=""; print $0}' lists.txt | sed '/^;/d;s/;//g;s/#//g' > updated_list.txt
Ihre Bedingungen sind sehr klar und klar definiert. Die ganze Arbeit kann also mit einem awk
Skript erledigt werden :
awk '/^;/ || (!/IN A/) {next} # condition 1 and condition 2
{sub(/IN A/,"",$0);$1=$1;$0=$0} # condition 5, FS>OFS, recompute fields
{sub(/[.]$/,"",$1)} # condition 3
{sub(/;.*$/,"",$0)} # condition 4
{sub(/[.]$/,"",$NF)} # condition 6 (IP is now in last col)
{ print }' file
IN A
.
von IPDieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen