Я должен удалить все жала из запуска файла до определенного момента с помощью чего-либо, sed, Grep, awk в оболочке
ВХОД
sCSISmart20 TRAP-TYPE ENTERPRISE cyclone DESCRIPTION "Aspi: unable to read the file server hard disk might have problems" --#TYPE "Aspi: unable to read the database file" --#SUMMARY "ASPI: unable to read the file, server hard disk may have problems" --#ARGUMENTS {} --#SEVERITY WARNING --#TIMEINDEX 100 --#STATE OPERATIONAL --#HELP "scsismrt.hlp" --#HELPTAG 124 ::= 124 sCSISmart21 TRAP-TYPE ENTERPRISE cyclone DESCRIPTION "Aspi: database is corrupted" --#TYPE "Aspi: database is corrupted" --#SUMMARY "ASPI: database file is corrupted" --#ARGUMENTS {} --#SEVERITY WARNING --#TIMEINDEX 100 --#STATE OPERATIONAL --#HELP "scsismrt.hlp" --#HELPTAG 125 ::= 125 sCSISmart12 TRAP-TYPE ENTERPRISE cyclone VARIABLES {cycHostAdapterNumber, cycScsiTargetID, cycLun, cycVendor, cycProduct, cycSenseInfo} DESCRIPTION "The HostAdapter# %d, TargetID %d, Lun# %d has Predictive Failure Condition on vendor %s product %s with sense info MSB(sense code), next 8 bits (sense code Qual) next 8 bits (Add sense code Qual) LSB (0000) %d" --#TYPE "Device has SMART/Predicictive failure event" --#SUMMARY "The HostAdapter# %d , TargetID %d, Lun# %d has Predictive Failure Condition on vendor %s product %s with senseinfo %d" --#ARGUMENTS {0,1,2,3,4,5} --#SEVERITY INFORMATIONAL --#TIMEINDEX 100 --#STATE OPERATIONAL --#HELP "scsismrt.hlp" --#HELPTAG 116 ::= 116
КОД
sed/grep/awk (something that deletes from first line to ::= xxx(a random number))
ВЫВОД
sCSISmart21 TRAP-TYPE ENTERPRISE cyclone DESCRIPTION "Aspi: database is corrupted" --#TYPE "Aspi: database is corrupted" --#SUMMARY "ASPI: database file is corrupted" --#ARGUMENTS {} --#SEVERITY WARNING --#TIMEINDEX 100 --#STATE OPERATIONAL --#HELP "scsismrt.hlp" --#HELPTAG 125 ::= 125 sCSISmart12 TRAP-TYPE ENTERPRISE cyclone VARIABLES {cycHostAdapterNumber, cycScsiTargetID, cycLun, cycVendor, cycProduct, cycSenseInfo} DESCRIPTION "The HostAdapter# %d, TargetID %d, Lun# %d has Predictive Failure Condition on vendor %s product %s with sense info MSB(sense code), next 8 bits (sense code Qual) next 8 bits (Add sense code Qual) LSB (0000) %d" --#TYPE "Device has SMART/Predicictive failure event" --#SUMMARY "The HostAdapter# %d , TargetID %d, Lun# %d has Predictive Failure Condition on vendor %s product %s with senseinfo %d" --#ARGUMENTS {0,1,2,3,4,5} --#SEVERITY INFORMATIONAL --#TIMEINDEX 100 --#STATE OPERATIONAL --#HELP "scsismrt.hlp" --#HELPTAG 116 ::= 116
Таким образом, Вы видите, что только первая часть файла была удалена. Позже я могу поместить это в ЦИКЛ так, чтобы я удалил один абзац за один раз.
ТАКЖЕ каждый файл разделяется пустой ссылкой, Таким образом, Вы могли также сказать мне что-то, что удаляет от первой строки до первой пустой строки, с которой это встречается.
Используя sed
:
< inputfile sed '1,/::=/d' > outputfile
< inputfile
: перенаправляет содержание inputfile
кому: sed
stdin
> outputfile
: перенаправляет содержание sed
stdout
кому: outputfile
sed
разбивка команды:
1,/::=/d
: удаляет все строки между первой и первой, соответствующей ::=
regex включительноИспользуя awk
:
< inputfile awk 'NR==1,/::=/ {next}; {print}' > outputfile
< inputfile
: перенаправляет содержание inputfile
кому: sed
stdin
> outputfile
: перенаправляет содержание sed
stdout
кому: outputfile
awk
разбивка команды:
NR==1,/::=/ {next}
: пропускает запись если между первой и первой, соответствующей ::=
regex включительно{print}
: печатает записьИспользование Perl:
< inputfile perl -0777 -pe 's/^(.*\n)*?::=.*\n//' > outputfile
-0777
: хлебает целый файл сразу вместо одной строки в то время-p
: места a while (<>) {[...]}
цикл вокруг сценария и печати обработанный файл-e
: читает сценарий из аргументовРазбивка команды Perl:
s
: утверждает для выполнения замены/
: запускает шаблон^(.*\n)*?::=.*\n
: соответствия любой символьный нуль или больше раз в начале файла жадно в текущей строке (т.е. (.
) шаблон будет подобран большинство раз как возможный в текущей строке) и новая строка, нуль или больше раз лениво в текущем файле (т.е. (.*\n)
шаблон будет подобран наименьшее количество раз как возможный в текущем файле), прежде a ::=
строка, соответствуя затем любому символьному нулю или больше раз жадно в текущей строке и новой строке/
: останавливается шаблон / запускает замещающую строку/
: останавливается замещающая строка / запускает модификаторы Другой awk
версия:
awk '/sCSISmart(12|20)\s+TRAP-TYPE/,/::=/ {print}' foo
/sCSISmart(12|20)\s+TRAP-TYPE/
соответствия sCSISmart12 TRAP-TYPE
и sCSISmart20 TRAP-TYPE
определяют то, в чем Вы нуждаетесь
Вывод
sCSISmart20 TRAP-TYPE
ENTERPRISE cyclone
DESCRIPTION
"Aspi: unable to read the file server hard disk might have problems"
--#TYPE "Aspi: unable to read the database file"
--#SUMMARY "ASPI: unable to read the file, server hard disk may have problems"
--#ARGUMENTS {}
--#SEVERITY WARNING
--#TIMEINDEX 100
--#STATE OPERATIONAL
--#HELP "scsismrt.hlp"
--#HELPTAG 124
::= 124
sCSISmart12 TRAP-TYPE
ENTERPRISE cyclone
VARIABLES {cycHostAdapterNumber, cycScsiTargetID, cycLun, cycVendor, cycProduct, cycSenseInfo}
DESCRIPTION
"The HostAdapter# %d, TargetID %d, Lun# %d has Predictive Failure Condition on vendor %s product %s with sense info MSB(sense code), next 8 bits (sense code Qual) next 8 bits (Add sense code Qual) LSB (0000) %d"
--#TYPE "Device has SMART/Predicictive failure event"
--#SUMMARY "The HostAdapter# %d , TargetID %d, Lun# %d has Predictive Failure Condition on vendor %s product %s with senseinfo %d"
--#ARGUMENTS {0,1,2,3,4,5}
--#SEVERITY INFORMATIONAL
--#TIMEINDEX 100
--#STATE OPERATIONAL
--#HELP "scsismrt.hlp"
--#HELPTAG 116
::= 116
Приведенный ниже скрипт принимает файл в качестве аргумента командной строки и печатает все строки только после того, как обнаружена первая строка ::=
.
#!/bin/bash
main(){
local flag=false
while IFS= read -r line;
do
case "$line" in
*"::="*) flag=true && continue ;;
esac
$flag && echo "$line"
done < "$1"
}
main "$@"
Тестовый прогон (согласуется с желаемым выходом OP):
$ ./remove_paragraph.sh input.txt
sCSISmart21 TRAP-TYPE
ENTERPRISE cyclone
DESCRIPTION
"Aspi: database is corrupted"
--#TYPE "Aspi: database is corrupted"
--#SUMMARY "ASPI: database file is corrupted"
--#ARGUMENTS {}
--#SEVERITY WARNING
--#TIMEINDEX 100
--#STATE OPERATIONAL
--#HELP "scsismrt.hlp"
--#HELPTAG 125
sCSISmart12 TRAP-TYPE
ENTERPRISE cyclone
VARIABLES {cycHostAdapterNumber, cycScsiTargetID, cycLun, cycVendor, cycProduct, cycSenseInfo}
DESCRIPTION
"The HostAdapter# %d, TargetID %d, Lun# %d has Predictive Failure Condition on vendor %s product %s with sense info MSB(sense code), next 8 bits (sense code Qual) next 8 bits (Add sense code Qual) LSB (0000) %d"
--#TYPE "Device has SMART/Predicictive failure event"
--#SUMMARY "The HostAdapter# %d , TargetID %d, Lun# %d has Predictive Failure Condition on vendor %s product %s with senseinfo %d"
--#ARGUMENTS {0,1,2,3,4,5}
--#SEVERITY INFORMATIONAL
--#TIMEINDEX 100
--#STATE OPERATIONAL
--#HELP "scsismrt.hlp"
--#HELPTAG 116