#bash #shell #terminal #grep #csh
#bash #оболочка #терминал #grep #csh
Вопрос:
У меня сотни текстовых файлов в одном каталоге. Для всех файлов я хочу удалить все строки, начинающиеся с HETATM . Мне понадобится код csh или bash.
Я бы подумал, что вы будете использовать grep, но я не уверен.
Ответ №1:
Используйте sed
так:
sed -i -e '/^HETATM/d' *.txt
для обработки всех файлов на месте.
-i
означает «на месте».
-e
означает выполнение следующей команды.
/^HETATM/ означает «найти строки, начинающиеся с HETATM», а следующее d
означает «удалить».
Сначала сделайте резервную копию!
Если вы действительно хотите сделать это с grep
помощью, вы могли бы сделать это:
#!/bin/bash
for f in *.txt
do
grep -v "^HETATM" "%f" > $$.tmp amp;amp; mv $$.tmp "$f"
done
Он создает временный файл выходных данных grep
(в файле $$.tmp
) и перезаписывает ваш исходный файл только в том случае, если команда выполняется успешно.
Ответ №2:
Используя -v
опцию grep
, чтобы получить все строки, которые не совпадают:
grep -v '^HETATM' input.txt > output.txt