Как сделать так, чтобы строки, не содержащие значений, начинались с определенного шаблона в файле с разделителями вертикальной чертой?

У меня была похожая проблема

 Run command: /sbin/yast2 sw_single &
 terminate called after throwing an instance of 'YUIPluginException'
  what():  Couldn't load plug-in qt
 /sbin/yast2: line 448:  4353 Aborted                 (core dumped) $ybindir/y2start $module "$@" "$SELECTED_GUI" $Y2_GEOMETRY $Y2UI_ARGS

 zypper se libyui

было

 S  | Name                            | Summary                                                     | Type   
 ---+---------------------------------+-------------------------------------------------------------+--------
    | libyui-devel                    | Libyui header files                                         | package
    | libyui-doc                      | Libyui documentation                                        | package
    | libyui-ncurses-devel            | Libyui-ncurses header files                                 | package
    | libyui-ncurses-doc              | Libyui-ncurses documentation                                | package
    | libyui-ncurses-pkg-devel        | Libyui-ncurses-pkg header files                             | package
    | libyui-ncurses-pkg-doc          | Libyui-ncurses-pkg documentation                            | package
 i+ | libyui-ncurses-pkg7             | Libyui - yast2 package selector widget for the ncurses UI   | package
 i  | libyui-ncurses-pkg8             | Libyui - yast2 package selector widget for the ncurses UI   | package
 i+ | libyui-ncurses7                 | Libyui - Character Based User Interface                     | package
 i  | libyui-ncurses8                 | Libyui - Character Based User Interface                     | package
    | libyui-qt-devel                 | Libyui-qt header files                                      | package
    | libyui-qt-doc                   | Libyui-qt documentation                                     | package
    | libyui-qt-graph-devel           | Libyui-qt-graph header files                                | package
    | libyui-qt-graph-doc             | Libyui-qt-graph documentation                               | package
 i+ | libyui-qt-graph7                | Libyui - Qt Graph Widget                                    | package
    | libyui-qt-graph8                | Libyui - Qt Graph Widget                                    | package
    | libyui-qt-pkg-devel             | Libyui-qt-pkg header files                                  | package
    | libyui-qt-pkg-doc               | Libyui-qt-pkg documentation                                 | package
 i+ | libyui-qt-pkg7                  | Libyui - Qt Package Selector                                | package
    | libyui-qt-pkg8                  | Libyui - Qt Package Selector                                | package
 i+ | libyui-qt7                      | Libyui - Qt User Interface                                  | package
    | libyui-qt8                      | Libyui - Qt User Interface                                  | package
 i+ | libyui7                         | Libyui - GUI-abstraction library                            | package
 i  | libyui8                         | Libyui - GUI-abstraction library                            | package
    | ruby2.4-rubygem-libyui-rake     | Rake tasks providing basic work-flow for libyui development | package
    | ruby2.4-rubygem-libyui-rake-doc | RDoc documentation for libyui-rake                          | package

Исправлено

 zypper in libyui-qt8 libyui-qt-graph8 libyui-qt-pkg8
0
26.12.2019, 07:11
4 ответа

Скрипт Python

#!/usr/bin/python
import re
k=re.compile(r'A[A-Z]-')
l=open('test_file.txt','r')
for i in l:
    if not re.search (k,i):
        print  i.strip()

выход

USER1|45232|
SYSTEM1|A9-12312|
-1
28.01.2020, 05:06

Команда

sed -n '/A[A-Z]-/!p'  filename

выход

USER1|45232|
SYSTEM1|A9-12312|
-1
28.01.2020, 05:06
$  grep -v '|A[PRF]-' test_file.txt 

Решение на основе grep.

$ sed -e '/^[^|]*[|]A[PRF]-/d' test_file.txt > test_filtered.txt

И в случае, если ввод занимает всего 2 -поля, то это будет:

$ sed -e '/[|]A[PRF]-/d' test_file.txt > test_filtered.txt

Примечание :Я пишу [|]даже там, где равнина |Хватило бы. Это сделано для того, чтобы он работал как в обычном, так и в расширенном режиме регулярных выражений без изменений. IOW, это будет работать для расширенного регулярного выражения POSIX и GNU sed.

1
28.01.2020, 05:06

с использованием Миллера(https://github.com/johnkerl/miller)это

mlr --csv --fs "|" --implicit-csv-header --headerless-csv-output filter -x -S '$2=~"^A[RFP]-"' input >output
1
28.01.2020, 05:06

Теги

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