удалить текст из файла

Я хочу удалить текст из file1.txt.

я помещаю текст в файл tmp и у:

grep -f tmp file.txt

но это дает мне только разницу.

вопрос в том, как удалить разницу от file.txt.

26
задан iiSeymour
14.11.2022 8:59 Количество просмотров материала 2878
Распечатать страницу

4 ответа

Doing grep -f tmp file.txt отобразит все строки, содержащие работу text (предположим tmp просто продолжает работу text). Если вы хотите, чтобы отобразить все строки, которые не содержат текст Слова, которое вы должны использовать -v возможность инвертировать матч:

$ grep -v 'text' file.txt

если вы напечатаете все строки в файле, но просто удалите все вхождения text затем:

$ sed 's/text//g' 
7
отвечен iiSeymour 2022-11-15 16:47

если вы хотите удалить строки из своего file.txt, который содержит строку, где text - Это семя, то вы можете сделать что-то вроде:

sed '/text/d' file.txt

или

sed -n '/text/!p' file.txt
4
отвечен jaypal singh 2022-11-15 19:04

что вы хотите сделать, это

grep -Fvf tmp file.txt

С man grep:

   -f FILE, --file=FILE
          Obtain patterns from FILE, one per line.   The
          empty   file   contains   zero  patterns,  and
          therefore matches nothing.  (-f  is  specified
          by POSIX.)
   -F, --fixed-strings
          Interpret PATTERN as a list of fixed  strings,
          separated  by  newlines, any of which is to be
          matched.  (-F is specified by POSIX.)
   -v, --invert-match
          Invert  the  sense of matching, to select non-
          matching lines.  (-v is specified by POSIX.)

и -f говорит grep читать список шаблонов, он будет искать из файла. -F требуется grep не интерпретирует эти шаблоны как регулярные выражения. Итак, дана строка вида foo.bar на . будет восприниматься как литерал . а не как "любой символ". Наконец-то -v инвертирует матч так grep выведет только те строки, которые не матч любой из моделей в tmp. Например:

$ cat pats 
aa
bb
cc
$ cat file.txt 
This line has aa
This one contains bb
This one contains none of the patterns
This one contains cc
$ grep -Fvf pats file.txt 
This one contains none of the patterns
2
отвечен terdon 2022-11-15 21:21

что я делаю это:

sed '/text_to_delete/d' filename | sponge filename

это внесет изменения в исходный файл.

0
отвечен EsquimaltJim 2022-11-15 23:38

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх