Терминал фильтра шаблонов

На самом деле это было довольно просто - все, что мне нужно было сделать, это удалить шлюз по умолчанию через Ethernet. Я не уверен, почему мой адрес привязки для ping не работал, но в любом случае он работает после того, как я запустил:

$ sudo ip route delete default via 192.168.30.254

(где этот IP был моим шлюзом по умолчанию для локальной сети on)

Теперь Quectel EC21 автоматически подключается! Учитывая отсутствие полезной документации от Quectel, это меня очень удивило - но там вы идете.

0
задан 14 May 2018 в 10:23

9 ответов

Если вам нужно использовать 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.

3
ответ дан 22 May 2018 в 10:43

Если вам нужно использовать 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.

3
ответ дан 17 July 2018 в 14:21

Если вам нужно использовать 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.

3
ответ дан 20 July 2018 в 14:26

Поскольку /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 напрямую.

4
ответ дан 22 May 2018 в 10:43
  • 1
    +1 ура для cut! Если вы хотите, чтобы именно OP написала cut -d: -f-3 <(head /etc/passwd) <(tail /etc/passwd). – dessert 14 May 2018 в 10:17
  • 2
    это из-за того, что эхо-сигнал удовлетворяет моим потребностям, но я предпочитаю greg только потому, что я должен использовать это, а не что-то другое – Newb 14 May 2018 в 10:24
  • 3
    @Nutshelino Если вы ограничены одной командой, используйте ее тег в вопросе. И вы должны использовать grep вместо echo $(grep). – Melebius 14 May 2018 в 10:27

Использование 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]

Извините за скрытность ☺

0
ответ дан 22 May 2018 в 10:43

Использование 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 (действие по умолчанию)

Извините за скрытность ☺

1
ответ дан 17 July 2018 в 14:21

Поскольку /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 напрямую.

4
ответ дан 17 July 2018 в 14:21

Использование 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 (действие по умолчанию)

Извините за скрытность ☺

1
ответ дан 20 July 2018 в 14:26

Поскольку /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 напрямую.

4
ответ дан 20 July 2018 в 14:26
  • 1
    +1 ура для cut! Если вы хотите, чтобы именно OP написала cut -d: -f-3 <(head /etc/passwd) <(tail /etc/passwd). – dessert 14 May 2018 в 10:17
  • 2
    это из-за того, что эхо-сигнал удовлетворяет моим потребностям, но я предпочитаю greg только потому, что я должен использовать это, а не что-то другое – Newb 14 May 2018 в 10:24
  • 3
    @Nutshelino Если вы ограничены одной командой, используйте ее тег в вопросе. И вы должны использовать grep вместо echo $(grep). – Melebius 14 May 2018 в 10:27

Другие вопросы по тегам:

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