добавить расширение.sh ко всем файлам bash

# awk_scr

BEGIN {
    # clear the output file if it already exists
    # you can do this using your shell instead
    ORS = ""
    print "" > "final.txt"
    ORS = "\n"
}

/missing/ {
    # delete all characters prior to the last occurrence of "missing:"
    # this assumes that there is only one sub-string "missing:" per line
    sub(/.*missing:/, "missing:", $0)

    # append the updated line to the output file
    print $0 >> "final.txt"
}

Затем запустите awk -f awk_scr ERR.txt && cat final.txt.

Другим решением является использование sed, которое короче:

sed 's/^.*missing:/missing:/' ERR.txt | tee final.txt

Однако у него есть тот же недостаток, что и у awk-решения :— предполагается, что в каждой строке встречается только одно вхождение «отсутствует :». Это связано с тем, что и awk, и sedсовпадают только жадно.

Чтобы имитировать ленивое сопоставление, вы можете сделать следующее, вместо (что лучше):

sed -E 's/(missing)(.*)|./\1\2/g' ERR.txt | tee final.txt

1
15.02.2021, 03:57
0 ответов

Теги

Похожие вопросы