На самом деле это было довольно просто - все, что мне нужно было сделать, это удалить шлюз по умолчанию через Ethernet. Я не уверен, почему мой адрес привязки для ping не работал, но в любом случае он работает после того, как я запустил:
$ sudo ip route delete default via 192.168.30.254
(где этот IP был моим шлюзом по умолчанию для локальной сети on)
Теперь Quectel EC21 автоматически подключается! Учитывая отсутствие полезной документации от Quectel, это меня очень удивило - но там вы идете.
Если вам нужно использовать grep, вы можете сопоставить первые три поля каждой строки с
grep -o '^[^:]*:[^:]*:[^:]*'
Это соответствует началу строки (^), а затем все, кроме двоеточия :, за которым следует двоеточие : и т. д. Благодаря опции -o, grep печатает только согласованные (непустые) части соответствующей строки, см. man grep. Вот пример с первой и последней двумя строками из /etc/passwd:
$ grep -oh '^[^:]*:[^:]*:[^:]*' <(head -2 /etc/passwd) <(tail -2 /etc/passwd)
root:x:0
daemon:x:1
timidity:x:122
geoclue:x:123
Подробнее об основных регулярных выражениях (BRE), используемых здесь, на https://www.regular-expressions.info/ gnu.html.
Если вам нужно использовать grep, вы можете сопоставить первые три поля каждой строки с
grep -o '^[^:]*:[^:]*:[^:]*'
Это соответствует началу строки (^), а затем все, кроме двоеточия :, за которым следует двоеточие : и т. д. Благодаря опции -o, grep печатает только согласованные (непустые) части соответствующей строки, см. man grep. Вот пример с первой и последней двумя строками из /etc/passwd:
$ grep -oh '^[^:]*:[^:]*:[^:]*' <(head -2 /etc/passwd) <(tail -2 /etc/passwd)
root:x:0
daemon:x:1
timidity:x:122
geoclue:x:123
Подробнее об основных регулярных выражениях (BRE), используемых здесь, на https://www.regular-expressions.info/ gnu.html.
Если вам нужно использовать grep, вы можете сопоставить первые три поля каждой строки с
grep -o '^[^:]*:[^:]*:[^:]*'
Это соответствует началу строки (^), а затем все, кроме двоеточия :, за которым следует двоеточие : и т. д. Благодаря опции -o, grep печатает только согласованные (непустые) части соответствующей строки, см. man grep. Вот пример с первой и последней двумя строками из /etc/passwd:
$ grep -oh '^[^:]*:[^:]*:[^:]*' <(head -2 /etc/passwd) <(tail -2 /etc/passwd)
root:x:0
daemon:x:1
timidity:x:122
geoclue:x:123
Подробнее об основных регулярных выражениях (BRE), используемых здесь, на https://www.regular-expressions.info/ gnu.html.
Поскольку /etc/passwd представляет собой список полей, разделенных стабильным разделителем (подобно CSV), вы должны использовать команды, которые могут работать с ними, например cut или awk (для более сложных операций). 0]
В этом случае cut является достаточным:
cut -d: -f-3
Объяснение:
Флаг -d устанавливает разделитель (или разделитель полей). Мы хотим : здесь. Флаг -f выбирает поля для печати. -3 означает «до 3-го столбца».Пример:
$ cut -d: -f-3 /etc/passwd | head
root:x:0
daemon:x:1
bin:x:2
sys:x:3
sync:x:4
games:x:5
man:x:6
lp:x:7
mail:x:8
news:x:9
Кстати, излишне выдавать echo $(command). Используйте command напрямую.
Использование awk:
$ awk -F: 'NR<=20 && NF=3' /etc/passwd
root x 0
daemon x 1
bin x 2
sys x 3
sync x 4
games x 5
...
, если NR<=20 (NR = номер регистра) и после установки NF в 3 (NF = количество полей) распечатать его (действие по умолчанию) [ ! d1] Извините за скрытность ☺
Использование awk:
$ awk -F: 'NR<=20 && NF=3' /etc/passwd
root x 0
daemon x 1
bin x 2
sys x 3
sync x 4
games x 5
...
, если NR<=20 (NR = номер регистра) и ... после установки NF в 3 (NF = количество полей) ... print it (действие по умолчанию) Извините за скрытность ☺
Поскольку /etc/passwd представляет собой список полей, разделенных стабильным разделителем (подобно CSV), вы должны использовать команды, которые могут работать с ними, например cut или awk (для более сложных операций).
В этом случае cut является достаточным:
cut -d: -f-3
Объяснение:
Флаг -d устанавливает разделитель (или разделитель полей). Мы хотим : здесь. Флаг -f выбирает поля для печати. -3 означает «до 3-го столбца».Пример:
$ cut -d: -f-3 /etc/passwd | head
root:x:0
daemon:x:1
bin:x:2
sys:x:3
sync:x:4
games:x:5
man:x:6
lp:x:7
mail:x:8
news:x:9
Кстати, излишне выдавать echo $(command). Используйте command напрямую.
Использование awk:
$ awk -F: 'NR<=20 && NF=3' /etc/passwd
root x 0
daemon x 1
bin x 2
sys x 3
sync x 4
games x 5
...
, если NR<=20 (NR = номер регистра) и ... после установки NF в 3 (NF = количество полей) ... print it (действие по умолчанию) Извините за скрытность ☺
Поскольку /etc/passwd представляет собой список полей, разделенных стабильным разделителем (подобно CSV), вы должны использовать команды, которые могут работать с ними, например cut или awk (для более сложных операций).
В этом случае cut является достаточным:
cut -d: -f-3
Объяснение:
Флаг -d устанавливает разделитель (или разделитель полей). Мы хотим : здесь. Флаг -f выбирает поля для печати. -3 означает «до 3-го столбца».Пример:
$ cut -d: -f-3 /etc/passwd | head
root:x:0
daemon:x:1
bin:x:2
sys:x:3
sync:x:4
games:x:5
man:x:6
lp:x:7
mail:x:8
news:x:9
Кстати, излишне выдавать echo $(command). Используйте command напрямую.