У меня есть файл, который содержит данные включая URL. Но существуют различные строки, которые не являются URL. Как я могу удалить их использующий команды терминала Ubuntu?
Вот Файл примера для ссылки: Демонстрационные Данные
com.blendtuts/S
°=
com.blengineering.www/:http
±=
Я хочу иметь вывод:
com.blendtuts/S
com.blengineering.www/:http
Дополнительные нежелательные строки не имеют никакой точки. Следовательно, я хочу удалить строки без точек
Один путь с sed
sed '/\./!d' file
/\./
точка литерала соответствия (вышел с \
, потому что иначе .
соответствия любой символ) !d
удаляют все кроме подобранного шаблона , Если Вы хотите отредактировать файл на месте, добавьте -i
к команде после тестирования. (Можно также добавить .bak
к -i
флаг sed -i.bak ...
для создания локального резервного копирования файла.)
sed -i '/\./!d' file
Вы могли grep все с точкой в новый файл:
grep "\." file > newfile
Тот путь можно сохранить старый файл.
Или сохраните строки, которые содержат точка ,
sed -ni.bak '/\./p' infile
Я думаю awk
, то, которые длятся тот, отсутствующий стороне:
$ awk -F\. 'NF>1' file
com.blendtuts/S
com.blengineering.www/:http
Это устанавливает разделителя полей на точку. Затем это - вопрос печати тех строк, которые имеют по крайней мере два поля: это будет означать, что по крайней мере одна точка происходит.
Используя жемчуг:
perl -i -ne 'print if /\./' /path/to/file
Можно сделать это довольно легко с энергией. Если Вы - удобная энергия использования как текстовый редактор (открытие, редактирование и запись файлов), то сделайте это:
:g!/\./d
, Если Вы не удобная энергия использования, или Вы использовали бы ее в качестве инструмента командной строки, можно просто сделать от терминала:
vim file -c "g!/\./d" -c "wq"
Вы могли немного изменить это для сохранения в новый файл:
vim file -c "g!/\./d" -c "w newfile" -c "q!"
Это использует "глобальную" команду энергии, которая применяется исключая командой к каждой строке, соответствующей (или не соответствующей) regex. В этом случае команда является" (d) элитой", и она будет применена к каждой команде, не соответствующей regex \.