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

Установите дополнительные настройки (aka gnome-tweak-tool) из Software Center

Установите дополнительные настройки (aka gnome-tweak-tool) из Software Center

Нажмите «Шрифты» и отрегулируйте настройки шрифта.

1
задан 26 October 2015 в 15:50

4 ответа

Для тестирования только в терминале используйте:

sed '/[cr]at/d' file_name

Чтобы действительно удалить эти строки из файла, используйте:

sed -i '/[cr]at/d' file_name
12
ответ дан 24 May 2018 в 17:09

Попробуйте vim-way:

ex +"g/[cr]at/d" -scwq file.txt
5
ответ дан 24 May 2018 в 17:09

Подумайте, есть ли у вас файл с file_name и вы хотите искать мышь, но в то же время несколько строк от мыши, имеющих другие слова, такие как cat и rat, и вы не хотите видеть их в своем выход, поэтому один из способов сделать это -

grep -r mouse file_name | grep -vE "(cat|rat)"
0
ответ дан 24 May 2018 в 17:09

Portable shell way

Работает в /bin/sh, который является dash на Ubuntu, а также ksh и bash. Немного неудобно, что вам нужно написать несколько тестовых примеров для каждого слова в инструкции case, но переносимо. Работает с случаями, когда слово появляется отдельно на линии, в начале, в конце строки или в середине строки и игнорирует, где это может быть частью другого слова.

#!/bin/sh
line_handler(){
   # $1 is line read, prints to stdout
    case "$1" in
        cat|cat\ *|*\ cat\ *|*\ cat) true;; # do nothing if cat or rat in line
        rat|rat\ *|*\ rat\ *|*\ rat) true;; 
        *) printf "%s\n" "$1"
    esac
}

readlines(){
    # $1 is input file, the rest is words we want to remove
    inputfile="$1"
    shift

    while IFS= read -r line;
    do
        line_handler "$line" "$@"
    done < "$inputfile"
    [ -n "$line" ] && line_handler "$line" 
}

readlines "$@"

И это как это работает:

$ cat input.txt                                                                                                                                                        
the big big fat cat
the cat who likes milk 
jumped over gray rat
concat 
this is catchy
rat
rational
irrational
$ ./dellines.sh input.txt                                                                                                                                              
concat 
this is catchy
rational
irrational
0
ответ дан 24 May 2018 в 17:09

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

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