können Sie verwenden diesen awk-Skript vorherige leere Zeile zu löschen:
awk -v desired_val="[source,shell]"
'BEGIN { first_time=1 }
{
if ($0 != desired_val && first_time != 1) { print prev };
prev = $0;
first_time = 0;
}
END { print $0 }' your_file
Nächstes Skript als früheres wenig mehr ist, bietet aber alle leeren Zeilen gewünscht, bevor Wert zu löschen.
# AWK script file
# Provides clearing all empty lines in front of desired value
# Usage: awk -v DESIRED_VAL="your_value" -f "awk_script_fname" input_fname
BEGIN { i=0 }
{
# If line is empty - save counts of empty strings
if (length($0) == 0) { i++; }
# If line is not empty and is DESIRED_VAL, print it
if (length ($0) != 0 && $0 == DESIRED_VAL)
{
print $0; i=0;
}
# If line is not empty and not DESIRED_VAL, print all empty str and current
if (length ($0) != 0 && $0 != DESIRED_VAL)
{
for (m=0;m<i;m++) { print ""; } i=0; print $0;
}
}
# If last lines is empty, print it
END { for (m=0;m<i;m++) { print ""; } }
Dies ist awk-Skript durch Typisierung gefolgt Befehl:
awk -v DESIRED_VAL="your_value" -f "awk_script_fname" input_fname
Ist es immer vor '[source, shell]' oder könnte es irgendetwas sein? – Inian
Nein, ich muss andere leere Zeilen erhalten. Löschen Sie einfach leere Zeilen vor den Codeblöcken. Danke –
Ja Zeilen beginnen mit "[source" als es ist ein Marker für asciidoc –