Удалите строки между 2 строками

Я должен удалить все жала из запуска файла до определенного момента с помощью чего-либо, 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   

Таким образом, Вы видите, что только первая часть файла была удалена. Позже я могу поместить это в ЦИКЛ так, чтобы я удалил один абзац за один раз.
ТАКЖЕ каждый файл разделяется пустой ссылкой, Таким образом, Вы могли также сказать мне что-то, что удаляет от первой строки до первой пустой строки, с которой это встречается.

-1
задан 16 June 2015 в 09:59

3 ответа

Используя 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 ::= строка, соответствуя затем любому символьному нулю или больше раз жадно в текущей строке и новой строке
  • /: останавливается шаблон / запускает замещающую строку
  • /: останавливается замещающая строка / запускает модификаторы
1
ответ дан 4 October 2019 в 03:18

Другой 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 
1
ответ дан 4 October 2019 в 03:18

Подход с использованием чистого BASH

Приведенный ниже скрипт принимает файл в качестве аргумента командной строки и печатает все строки только после того, как обнаружена первая строка ::=.

#!/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
1
ответ дан 4 October 2019 в 03:18

Другие вопросы по тегам:

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