Awk - remove line if $2 содержит строку

После нескольких часов борьбы я восстановил свою ОС. Я открыл свой компьютер через Live USB, затем с терминала я запускаю

sudo blkid

, чтобы проверить номер раздела моей установки, он находится в sda6

sudo mount /dev/sda6 /mnt

sudo mount --bind /dev /mnt/dev && sudo mount --bind /dev/pts /mnt/dev/pts && sudo mount --bind /proc /mnt/proc && sudo mount --bind /sys /mnt/sys

sudo chroot /mnt

сначала я запускаю

apt-get clean 

, чтобы очистить кеш

apt-get update

С момента последнего обновления borked моя система Я пробовал

dpkg --configure -a && apt-get -f install

, но не работал из-за ошибки insserv, которую я написал в своем вопросе. Я нашел причину ошибки. Я перешел на /etc/init.d и проверил все скрипты там, есть ли в них LSB ключевое слово раздела , потому что причина ошибка отсутствовала LSB keyword section like

 #!/bin/sh

 ### BEGIN INIT INFO
 # Provides:          
 # Required-Start:    
 # Required-Stop:
 # Should-Start:
 # Default-Start:    
 # Default-Stop:
 # Short-Description: PowerPanel to monitor CyberPower UPS
 ### END INIT INFO

В старых скриптах этого раздела не было, после того как я добавил этот раздел в старые скрипты и запустил

 dpkg --configure -a

, я избавился от этой чертовой ошибки.

Позже я взял список обновленных и удаленных пакетов с помощью

 cat /var/log/dpkg.log |grep remove| awk ' { print $4 } ' | awk -F ':' ' { print $1 } ' | tr '\n' ' '  >listrem

 cat /var/log/dpkg.log |grep upgrade| awk ' { print $4 } ' | awk -F ':' ' { print $1 } ' | tr '\n' ' '  >listupgr

, наконец, я установил удаленные пакеты с помощью

apt-get install $(grep -vE "^\s*#" listrem)

и переустановил обновленные пакеты с помощью

apt-get install --reinstall $(grep -vE "^\s*#" listupgr)

При перезагрузке

«Да, мой милый, прекрасный рабочий стол вернулся! "

1
28.02.2019, 20:25
2 ответа
<input.txt awk -F: '$2 !~ "hello123"' >output.txt

Установите :в качестве разделителя полей, печатайте все строки, где второй столбец не содержитhello123


Если это будет частью скрипта, может быть полезно передать переменную оболочки в awk вместе с шаблоном поиска:

var='hello123'
awk -F: -v pattern="$var" '$2 !~ pattern' input.txt > output.txt
2
27.01.2020, 23:41
Command

First method

sed -n -i '/^Hey:hello123$/!p'  filename


output

cat filename
Hey:hello


second method

python

#!/usr/bin/python

    import re
    k=open('l.txt','r')
    u=open('o.txt','w')
    for i in k:
        if "Hey:hello123" not in i:
            u.write(i)

output
cat o.txt 
Hey:hello


Third method

 awk -F ":" '$2 != "hello123" {print $0}' filename

    If you want to replace in orginal file use below method

    awk -F ":" '$2 != "hello123" {print $0}' l.txt >temperory && mv temperory filename


    output

    Hey:hello
0
27.01.2020, 23:41

Теги

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