У меня есть этот файл журнала, и я пытаюсь не печатать текст, содержащий патерн «APLHA».
+++ skdfhahjsahsdjk >
** ALPHA EDFJDJFKLJDKFJKSDLFJL
SDFSDGDRGRTG
WEFETTFYRT #168113++-
+++ skdfhahjsahsdjk >
* KJENRFKES DFJKLSDFJEDFJDJFKLJDKFJKSDLFJL
SDFSDGDRGRTG
WEFETTFYRT #168113++-
+++ skdfhahjsahsdjk >
CL mesukww juwaehdiearfa
SDFSDGDRGRTG
WEFETTFYRT #168113++-
+++ skdfhahjsahsdjk >
*C KJENRFKESDFJ ksludhieokdaewmdp
SDFSDGDRGRTG
WEFETTFYRT #168113++-
+++ skdfhahjsahsdjk >
** BETA EDFJDJFKLJDKFJKSDLFJL
SDFSDGDRGRTG
WEFETTFYRT #168113++-
Я пытался таким образом, но безуспешно. Он печатает остальную часть текста, кроме «АЛЬФА».
лог-файл кота |grep -v "АЛЬФА"
результат:
+++ skdfhahjsahsdjk >
SDFSDGDRGRTG
WEFETTFYRT #168113++-
Я ожидаю, что весь журнал, содержащий «АЛЬФА», не будет напечатан, как показано ниже:
+++ skdfhahjsahsdjk >
* KJENRFKES DFJKLSDFJEDFJDJFKLJDKFJKSDLFJL
SDFSDGDRGRTG
WEFETTFYRT #168113++-
+++ skdfhahjsahsdjk >
CL mesukww juwaehdiearfa
SDFSDGDRGRTG
WEFETTFYRT #168113++-
+++ skdfhahjsahsdjk >
*C KJENRFKESDFJ ksludhieokdaewmdp
SDFSDGDRGRTG
WEFETTFYRT #168113++-
+++ skdfhahjsahsdjk >
** BETA EDFJDJFKLJDKFJKSDLFJL
SDFSDGDRGRTG
WEFETTFYRT #168113++-
Не могли бы вы посоветовать какое-либо другое решение в этом случае?
С уважением Дом
Я попробовал ваше предложение, "grep -v" ALPHA "Input_file", и вывод такой же, как и раньше. Что касается команды cat -v, я не обнаружил управляющего символа M.
@Dominik, если представленное здесь решение поможет вам, вы также должны оценить ответ, проголосовав за него. вы можете принять только один ответ, но можете оценить все ответы.
попробуйте это:
awk 'BEGIN{RS=ORS = "\n\n"}!/ALPHA/' file
@Dominik в SO вы принимаете ответы, которые решили вашу проблему. иначе никто тебе больше не поможет. Проверьте историю вопросов и примите ответы.
Я не понял, как принять ответ, поэтому я не нажал «принять ответ». Теперь найду, спасибо :)
Альтернативное решение, использующее режим perl
slurp (-00
для включения). Это скажет perl
считать абзацы одной записью, а не строками. Дальше понятно, печатать только если ALPHA
нет.
perl -00 -ne 'print if !/ALPHA/' inputfile
+++ skdfhahjsahsdjk >
* KJENRFKES DFJKLSDFJEDFJDJFKLJDKFJKSDLFJL
SDFSDGDRGRTG
WEFETTFYRT #168113++-
+++ skdfhahjsahsdjk >
CL mesukww juwaehdiearfa
SDFSDGDRGRTG
WEFETTFYRT #168113++-
+++ skdfhahjsahsdjk >
*C KJENRFKESDFJ ksludhieokdaewmdp
SDFSDGDRGRTG
WEFETTFYRT #168113++-
+++ skdfhahjsahsdjk >
** BETA EDFJDJFKLJDKFJKSDLFJL
SDFSDGDRGRTG
WEFETTFYRT #168113++-
Спасибо за ваше решение! Да, кажется, с вашим предложением все в порядке, я ценю это :)
Когда я запускаю вашу команду
cat logfile |grep -v "ALPHA"
, которую на самом деле тоже можно написатьgrep -v "ALPHA" Input_file
, у меня все работает нормально. Не могли бы вы проверить один раз, есть ли у вас управляющие символы M в вашем Input_file? Сделавcat -v Input_file
и сообщив нам тогда?