Показать все строки в grepFile, которые не начинаются с letter

Что-то не так с вашим DNS. rs.archive.ubuntu.comдолжен преобразовываться в 147.91.175.253, но в вашей среде вы получаете 172.16.0.3, адрес в пространстве RFC 1918 -, то есть адрес, предназначенный для использования в вашей локальной сети. Глядя дальше в журнал, вы получаете 172.16.0.3 для каждого поиска DNS.

Проверьте свой /etc/resolv.confи посмотрите, что вы используете в качестве DNS-сервера. Если вы не находитесь в корпоративной сети, где это может вызвать проблемы, начните вместо этого использовать DNS-сервер Google 8.8.8.8. Если вы находитесь в корпоративной сети, поговорите со своими ИТ-специалистами.

-3
13.09.2019, 21:32
3 ответа

Достаточно просто:grep -v '^[[:alpha:]]' testfile

с таким тестовым файлом:

$ cat testfile 
sfdsaf
1sdflad
 asfd
,asdfasdf
safdaf

Приведенная выше команда вернет:

$ grep -v '^[[:alpha:]]' testfile 
1sdflad
 asfd
,asdfasdf

Почему?

  • ^выбирает начало строки
  • [[:alpha:]]greps на 1 букву
  • -vинвертирует совпадение

Альтернативой может быть использование sed '/^[[:alpha:]]/d' testfile, где sedкоманда dудаляет все, что соответствует ^[[:alpha:]]--, что опять-таки является буквой в начале строки.

Другим вариантом являетсяawk '/^[^a-zA-Z]/ { print $0 }' testfile

3
28.01.2020, 05:19

Просто используйте параметр regex в grep и инвертируйте результат поиска буквы в качестве первого символа:

$ cat file.txt

asd
Ajnjn
bdfadsf
Bkkkknm
csdgadga
4gafga
dfsdf
esdfasdg
2fsefse
~asdasd
 dfdfsd
fartaherh
3adsfasdf

$ grep -ve '^[a-zA-Z]' file.txt

4gafga
2fsefse
~asdasd
 dfdfsd
3adsfasdf
0
28.01.2020, 05:19

Вы также можете попробовать команду ниже

команда1:

sed -n '/^[a-zA-Z]/!p'  testfile

команда2:

awk '$0 !~ /^[a-zA-Z]/{print $0}' testfile
-1
28.01.2020, 05:19

Теги

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