Проблема с выражением sed / regex - PullRequest
0 голосов
/ 06 марта 2020

Доброе утро. Я новичок в REGEX, так что я слегка удачно пробираюсь через него.

Мне нужно удалить строку символов из файла, которая следует за шаблоном. В RegExr строка работает нормально, однако, когда я запускаю команду, она удаляет шаблон, но также иногда удаляет остальную часть строки.

Что мне нужно сделать, это удалить ", T = 3054626560" из файла журнала. 3054 ..... варьируется по всему файлу.

Мое выражение выглядит так: -i -r 's / (, T =). +? (([0-9] \ w +)) // g 'logfile.log

Пример ввода данных -

    03/06/2020 10:28:59.885 (27044, T = 3054626560) [D] [INTERFACE] Response Str: {"Status":0}
    03/06/2020 10:29:04.490 (27044, T = 3054626560) [D] [INTERFACE] Parsed Cmd Str: {
       "ServerCmdRequest" : {
          "CmdId" : 529
       }
    }
    03/06/2020 10:29:04.492 (27044, T = 3054626560) [D] [INTERFACE] Response Str: {"ResponseData":{"NeedAuthList":[{"dataSourceName":"UA_SYSTEM_TABLES","index":0,"isSystemTableDB":true,"needAuthentication":false},{"dataSourceName":"ABC","index":1,"isSystemTableDB":false,"needAuthentication":false}]},"Status":0}
    03/06/2020 10:29:05.228 (27044, T = 3054626560) [D] [INTERFACE] Parsed Cmd Str: {
       "ServerCmdRequest" : {
          "CmdId" : 17,
          "CmdInputs" : {
             "isTestRun" : true
          },
          "IDList" : [ 63 ]
       }
    }
    03/06/2020 10:29:05.229 (27044, T = 3054626560) [D] [CELL ACC]  SCell Created: [0x7fe7b0046220]
    03/06/2020 10:29:05.231 (27044, T = 3054626560) [D] [CELL ACC]  SCell Destroyed: [0x7fe7b0046220]
    03/06/2020 10:29:05.232 (27044, T = 3054626560) [D] [INTERFACE] Response Str: {
       "Status" : 10121,
       "errorText" : "Process run results will be lost."
    }

1 Ответ

0 голосов
/ 07 марта 2020

Я рекомендую следующую процедуру, учитывая ваш входной файл.

cat test.txt | sed 's/, T = [0-9][0-9]*//g'

Вы можете вывести это, скажем, временный файл, а затем вернуться в файл журнала, если вы хотите sh переписать оригинальный файл.

Пример вывода:

    03/06/2020 10:28:59.885 (27044) [D] [INTERFACE] Response Str: {"Status":0}
03/06/2020 10:29:04.490 (27044) [D] [INTERFACE] Parsed Cmd Str: {
   "ServerCmdRequest" : {
      "CmdId" : 529
   }
}
03/06/2020 10:29:04.492 (27044) [D] [INTERFACE] Response Str: {"ResponseData":{"NeedAuthList":[{"dataSourceName":"UA_SYSTEM_TABLES","index":0,"isSystemTableDB":true,"needAuthentication":false},{"dataSourceName":"ABC","index":1,"isSystemTableDB":false,"needAuthentication":false}]},"Status":0}
03/06/2020 10:29:05.228 (27044) [D] [INTERFACE] Parsed Cmd Str: {
   "ServerCmdRequest" : {
      "CmdId" : 17,
      "CmdInputs" : {
         "isTestRun" : true
      },
      "IDList" : [ 63 ]
   }
}
03/06/2020 10:29:05.229 (27044) [D] [CELL ACC]  SCell Created: [0x7fe7b0046220]
03/06/2020 10:29:05.231 (27044) [D] [CELL ACC]  SCell Destroyed: [0x7fe7b0046220]
03/06/2020 10:29:05.232 (27044) [D] [INTERFACE] Response Str: {
   "Status" : 10121,
   "errorText" : "Process run results will be lost."
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...