удаление «na» из столбца и свертывание строки

Срок службы Fedora 18 подошел к концу, никаких обновлений и исправлений ошибок не ожидается. Выполните обновление до текущей версии Fedora 20. Прочтите и внимательно следите за примечаниями к обновлению, с fedup были плохие сбои (в основном, обновленная система загружается в старую систему, а не в обновление; они должны ] должны быть устранены к настоящему времени), и держите машину подключенной к сети под рукой для поиска решений в Google на случай, если обновление не удастся.

0
30.12.2018, 01:42
3 ответа

С помощью awk:

awk '!/na/' file > new_file

Знак "!" значит не совпадают. «/na/» указывает шаблон «na». Вместе они означают несоответствие строк, содержащих шаблон na. Поведение awk по умолчанию — печатать, но вы также можете специально указать ему печатать (вызвать функцию печати )следующим образом:

awk '!/na/ {print}' file > new_file

Чтобы не печатать пустые строки в файле, используйте это регулярное выражение. !/^$/ Это говорит awk не совпадать с пустой строкой. Он будет совпадать, начиная с начала строки, обозначенной «^», до конца строки, обозначенной «$», без содержимого между ними. «&&» указывает использовать оба выражения при оценке каждой строки.

awk '!/na/ && !/^$/ {print}' file > new_file

С СЭД:

sed '/na/d' file > new_file

"/d указывает sed удалить строку, содержащую совпадающий шаблон "/na/"

Чтобы изменить исходный файл напрямую, без необходимости записи в новый файл, используйте опцию -i (на месте )с sed

sed -i '/na/d' file

Использование только оболочки bash со встроенным bash:

while read -r line; do [[ ! $line =~ na ]] && echo "$line"; done < file > o; mv o file

С Питоном:

with open('file', 'r') as rf:
  with open('out', 'w') as of:
    for line in rf:
      if not "na" in line:
        of.write(line)

Как и во всех других примерах, это не оставит пустой строки, учитывая образец ввода, указанный в исходном вопросе.

$ cat file
0.000
0.000
0.055
0.036
0.003
0.002
0.000
0.002
0.002
0.002
0.000
0.000
0.000
0.002
0.002
0.003
1
28.01.2020, 02:23

Так же просто, как:

grep -v na file > new_file
1
28.01.2020, 02:23
I tried with below 3 methods

1.using awk

command:awk '$0 !~/na/{print $0}' filename

2. using sed

sed -n '/na/!p' filename

3. using python

    #!/usr/bin/python
    import re
    k=open('filename','r')
    a=re.compile(r'[0-9]')
    for i in k:
            if re.search(a,i):
                    print i,

выход

0.000
0.000
0.055
0.036
0.003
0.002
0.000
0.002
0.002
0.002
0.000
0.000
0.000
0.002
0.002
0.003
1
28.01.2020, 02:23

Теги

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