Условие, которое соответствует всем вхождениям слова в файле, делает что-то

Для сокращения и выполнения всех вещей вы можете использовать раздел раздела Easeus master.you можете скачать его на http://download.cnet.com/EaseUS-Partition-Master-Home-Edition/ 3000-2248_4-10863346.html

Даже если вы можете загрузиться в программу установки livecd, используйте gparted менеджер разделов.

Вы можете использовать программное обеспечение easyBCD для двойной загрузки, пожалуйста, следуйте этому руководству

http://download.cnet.com/EaseUS-Partition-Master-Home-Edition/3000-2248_4-10863346.html

http: // neosmart. net / wiki / display / EBCD / Ubuntu

http://download.cnet.com/EaseUS-Partition-Master-Home-Edition/3000-2248_4-10863346.html

В большинстве случаев это будет работать, иногда это может не сработать. В этом случае вы можете следовать этой статье

1
задан 16 June 2015 в 06:23

4 ответа

Другое awk-решение:

$ gawk -F '\n *' -v RS="::=[^\n]*\n*" '{gsub(/[^0-9]/,"", RT); printf "%s\n%s\n", $4, RT}' foo
"Aspi: unable to read the file server hard disk might have problems"                           
124
"Aspi: database is corrupted"                                                  
125

Текст естественно делит на записи, но разделитель записей не очень прост. Это может быть две последовательные строки новой строки. Я решил использовать последнее поле в записи (::= ...), за которым следует сколь угодно много новых строк, в качестве разделителя записей.

Затем для разбиения на поля я использовал новую строку, за которой следует сколь угодно много пробелов , После этого это всего лишь вопрос о печати четвертого поля и извлечении чисел из текста разделителя записей (RT). Поскольку это решение использует RT, это GNU awk-only.

2
ответ дан 23 May 2018 в 19:48

В вашем сценарии вхождения слова можно найти с помощью awk, grep и sed; но вам придется разбить их в сценарии bash с некоторым аргументом case и итерацией. Это может быть сделано. Написание Perl, Python, Java или C ++-программы кажется лучшим способом для этого.

Я просто написал это для вас. Это c ++-программа. Скопируйте и вставьте программу ниже в gedit. Сохраните его как findword.cpp. ПРИМЕЧАНИЕ: вам необходимо построить необходимое для его компиляции.

:~$ sudo apt-get install build-essential -y

:~$ g++ -o findword findword.cpp

Программа:

#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#include <locale>

using namespace std;

int main()
{
    string wordhold = "";
    int index;
    string line;
    string trptype = "TRAP-TYPE";

    ifstream infile;
    infile.open("Yourfile.txt"); // change Yourfile.txt to the name of the file

    while ( getline(infile, line) ) {

        index = line.find('\n');
        string holdword = line.substr(0,index);
        wordhold = holdword;

        if ( wordhold.compare(wordhold.size(),9,trptype) == 0 ) {

            system("Execute the command you want inside the quotes");
            wordhold = "";

        }
        else {

            wordhold = "";

        }

    }
    infile.close();

    cout << "The file is closed\nDone" << endl;

    return 0;   
}

. Вы можете запускать несколько команд, дублируя системную функцию, которая находится в оператор условия (если).

Чтобы запустить программу, введите каталог, который вы скомпилировали, и выполните его из командной строки.

:~$ ./findword

Удачи.

1
ответ дан 23 May 2018 в 19:48
  • 1
    Я не эксперт C++, поддерживает ли это множество случаев в одной строке? Однако что-то, что бросается в глаза, заключается в том, что вы назначаете пустую строку wordhold как в if, так и в теле else, а тело else пусто, поэтому, возможно, вы можете опустите тело else и сделайте уникальное назначение вне тела if – kos 15 June 2015 в 16:31
  • 2
    docstore.mik.ua/orelly/networking_2ndEd/snmp/ch10_01.htm – oOpSgEo 15 June 2015 в 16:32
  • 3
    кто-то другой отредактировал эту программу. – oOpSgEo 15 June 2015 в 16:38

Использование awk:

< inputfile awk '/DESCRIPTION/ {getline; sub(/^ *"/,""); sub(/"$/,""); print}; /::=/ {sub(/::= */,""); print}'

Расширенная версия:

< inputfile awk '
    /DESCRIPTION/ {
        getline;
        sub(/^ *"/,"");
        sub(/"$/,"");
        print
    };
    /::=/ {
        sub(/^::= */,"");
        print
    }
'
/DESCRIPTION/: выбирает только записи, содержащие строку DESCRIPTION getline: пропускает первая запись sub(/^ *"/,""): замените строку, состоящую из любого количества пробелов, за которым следует символ ", в начале строки, с пустой строкой sub(/"$/,""): замените символ " в конце строка с пустой строкой print: печатает запись /::=/: выбирает только записи, содержащие строку ::= sub(/^::= */,""): замените строку, состоящую из ::=, за которой следует любое количество пробелов, в начале строки, с пустой строкой print: печатает запись
1
ответ дан 23 May 2018 в 19:48

Версия [[5]]

awk '/TRAP-TYPE/ {traptype=1}; traptype && /DESCRIPTION/ {getline; gsub(/^ +/, "", $0); gsub(/^\"/, "", $0); gsub(/\"\s+$/, "", $0); print}; traptype && /::=/ {print $2}' testfile

Вход

testfile

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

Вход

Aspi: unable to read the file server hard disk might have problems
124
Aspi: database is corrupted
125
[ ! d11]

Отдельные выходы

awk '/TRAP-TYPE/ {traptype=1}; traptype && /DESCRIPTION/ {getline; gsub(/^ +/, "", $0); gsub(/^\"/, "", $0); gsub(/\"\s+$/, "", $0); print;}' testfile

Aspi: unable to read the file server hard disk might have problems
Aspi: database is corrupted

awk '/sCSISmart.*TRAP-TYPE/ {traptype=1}; traptype && /::=/ {print $2}' testfile

124
125
1
ответ дан 23 May 2018 в 19:48
  • 1
    Хорошо, что часть печати в порядке, я все равно должен хранить ее в массиве, т. Е. В одном массиве описание и в другом массиве число. – SamFlynn 16 June 2015 в 06:26

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

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