
Ich suche nach einer Lösung, um Suchmusterpaare zu finden.
awk '/Schedule:/,/Retention Level:/' /tmp/data
Schedule: Full
Type: Full Backup
Calendar sched: Enabled
Included Dates-----------
Tuesday, Week 1
Tuesday, Week 2
Tuesday, Week 3
Tuesday, Week 4
Tuesday, Week 5
Excluded Dates----------
No specific exclude dates entered
No exclude days of week entered
Synthetic: 0
Checksum Change Detection: 0
PFI Recovery: 0
Maximum MPX: 4
Retention Level: 2 (3 weeks)
Schedule: INC
Type: Differential Incremental Backup
Calendar sched: Enabled
Included Dates-----------
Sunday, Week 1
Monday, Week 1
Wednesday, Week 1
Thursday, Week 1
Friday, Week 1
Saturday, Week 1
Sunday, Week 2
Monday, Week 2
Wednesday, Week 2
Thursday, Week 2
Friday, Week 2
Saturday, Week 2
Sunday, Week 3
Monday, Week 3
Wednesday, Week 3
Thursday, Week 3
Friday, Week 3
Saturday, Week 3
Sunday, Week 4
Monday, Week 4
Wednesday, Week 4
Thursday, Week 4
Friday, Week 4
Saturday, Week 4
Sunday, Week 5
Monday, Week 5
Wednesday, Week 5
Thursday, Week 5
Friday, Week 5
Saturday, Week 5
Excluded Dates----------
No specific exclude dates entered
No exclude days of week entered
PFI Recovery: 0
Maximum MPX: 4
Retention Level: 2 (3 weeks)
Oben ist die Eingabe
Gewünschte Ausgabe ist
Full Backup;Differential Incremental Backup , 3 weeks;3 weeks
Das ist ein Paar aus Typ und Retentionsstufe. Unter jedem Typ gibt es also eine Retentionsstufe. Ich brauche alle Paare in der gewünschten Ausgabe.
Zusätzliche Eingabedatei, wenn mehr als zwei Paare aus Typ und Beibehaltung verfügbar sind:
` Schedule: Montlhy_Full
Type: Full Backup
Calendar sched: Enabled
Included Dates-----------
Wednesday, Week 3
Excluded Dates----------
No specific exclude dates entered
No exclude days of week entered
Synthetic: 0
Checksum Change Detection: 0
PFI Recovery: 0
Maximum MPX: 4
Retention Level: 5 (3 months)
Schedule: Weekly_Full
Type: Full Backup
Calendar sched: Enabled
Included Dates-----------
Wednesday, Week 1
Wednesday, Week 2
Wednesday, Week 4
Wednesday, Week 5
Excluded Dates----------
No specific exclude dates entered
No exclude days of week entered
Synthetic: 0
Checksum Change Detection: 0
PFI Recovery: 0
Maximum MPX: 4
Retention Level: 3 (1 month)
Schedule: Daily_Inc
Type: Differential Incremental Backup
Calendar sched: Enabled
Included Dates-----------
Sunday, Week 1
Monday, Week 1
Tuesday, Week 1
Thursday, Week 1
Friday, Week 1
Saturday, Week 1
Sunday, Week 2
Monday, Week 2
Tuesday, Week 2
Thursday, Week 2
Friday, Week 2
Saturday, Week 2
Sunday, Week 3
Monday, Week 3
Tuesday, Week 3
Thursday, Week 3
Friday, Week 3
Saturday, Week 3
Sunday, Week 4
Monday, Week 4
Tuesday, Week 4
Thursday, Week 4
Friday, Week 4
Saturday, Week 4
Sunday, Week 5
Monday, Week 5
Tuesday, Week 5
Thursday, Week 5
Friday, Week 5
Saturday, Week 5
Excluded Dates----------
No specific exclude dates entered
No exclude days of week entered
PFI Recovery: 0
Maximum MPX: 4
Retention Level: 2 (3 weeks)
`
Antwort1
Dieses Skript:
awk '
$1 == "Schedule:" { $1 = ""; S = $0 }
$1 == "Type:" { $1 = ""; T = $0 }
$1 == "Retention" && $2 == "Level:" {
sub(/^.*\(/,"")
sub(/\).*/,"")
print S ", " T ", " $0
}' \
$1
produziert
Full, Full Backup, 3 weeks
INC, Differential Incremental Backup, 3 weeks
Dieses hier
awk '
BEGIN { SEP = "" }
# if line starts with 'Type:', remove that label,
# add separator and remainder of line to T
$1 == "Type:" { $1 = ""; T = T SEP $0 }
# Retention level lines, add only what's between
# brackets to L, set separator to ";"
$1 == "Retention" && $2 == "Level:" {
sub(/^.*\(/," ")
sub(/\).*/,"")
L = L SEP $0
if (SEP == "") {
SEP = ";"
}
}
END {
sub(/^ */,"",T)
print T "," L
}' \
$1
produziert
Full Backup; Full Backup; Differential Incremental Backup, 3 months; 1 month; 3 weeks
Antwort2
Versuchen Sie auch
awk -F"[:)(]" '/Schedule:/,/Retention Level:/ {if (/Type/) printf "%s, ", $NF; if (/Retention/) print $(NF-1)}' /tmp/data
Full Backup, 3 weeks
Differential Incremental Backup, 3 weeks
BEARBEITEN:Oder
awk -F"[:)(]" '/Schedule:/,/Retention Level:/ {if (/Type/) TYP = TYP ";" $NF; if (/Retention/) RET = RET ";" $(NF-1)} END {gsub (/; */, ";", TYP); print substr (TYP, 2) "," substr (RET, 2)}' /tmp/data
Full Backup;Differential Incremental Backup,3 weeks;3 weeks