Строка печати после энного возникновения соответствия

Когда Вы изменяете беспроводные настройки, необходимо удостовериться, что флажки "Available to all users" и "Connect automatically" включены, и это будет доступно всем автоматически. Ранние версии Администратора сети для некоторых систем не имели "Доступным всем пользователям", включил по умолчанию (Ваш мог бы быть одной из тех систем), и признаки, которые Вы описываете, точно поведение, которое, как предполагается, происходит с параметром конфигурации. Это было запутывающей настройкой по умолчанию для большинства людей, поэтому теперь значение по умолчанию должно иметь ее, включил (по крайней мере, это для Ubuntu).

enter image description here

Можно также проверить из командной строки, какими устройствами и соединениями управляет NetworkManager:

$ nmcli dev
DEVICE     TYPE              STATE        
wlan1      802-11-wireless   connected    
eth1       802-3-ethernet    connected    
$ nmcli con
NAME                      UUID                                   TYPE              TIMESTAMP-REAL                    
Yak n Yeti                b4e05828-e57e-4399-96aa-6cd988ee4975   802-11-wireless   Thu 27 Dec 2012 07:30:19 AM PST   

Настройки хранятся в /etc/NetworkManager/system-connections/ и Вы захотите удостовериться это autoconnect=true и это любой пользователи, которых Вы хотите, перечислено permissions=user:whoever:root:; или эквивалент "Доступного всем пользователям", который является permissions=[];

[connection]
id=Yak n Yeti
uuid=b4e05828-e57e-4399-96aa-6cd988ee4975
type=802-11-wireless
permissions=user:whoever:;
autoconnect=false
timestamp=1355439451

[802-11-wireless]
ssid=Yak n Yeti
mode=infrastructure
mac-address=24:77:05:FF:97:BC
security=802-11-wireless-security

[802-11-wireless-security]
key-mgmt=wpa-psk
wep-key-flags=1
psk-flags=1
leap-password-flags=1

[ipv4]
method=auto

[ipv6]
method=auto
8
14.02.2014, 19:17
5 ответов
awk -v n=3 '/<Car>/ && !--n {getline; print; exit}'

Или:

awk '/<Car>/ && ++n == 3 {getline; print; exit}'

Передать шаблон поиска как переменную:

var='<car>'
PATTERN="$var" awk -v n=3 '
  $0 ~ ENVIRON["PATTERN"] && ++n == 3 {getline; print; exit}'

Сюда использование ENVIRON вместо -v как -v разворачивает escape-последовательности обратной косой черты, и обратные косые черты часто находятся в регулярных выражениях (так должен был бы быть удвоен с -v).

GNU awk 4.2 или выше позволяет Вам присвоить переменные, поскольку сильный ввел regexps. Пока его режим POSIX не включен (например, через $POSIXLY_CORRECT переменная среды, можно сделать:

# GNU awk 4.2 or above only, when not in POSIX mode
gawk -v n=3 -v pattern="@/$var/" '
  $0 ~ pattern && ++n == 3 {getline; print; exit}'
10
27.01.2020, 20:09
  • 1
    Как передать шаблон поиска также как переменную в вышеупомянутой команде –  WanderingMind 17.05.2016, 17:10
  • 2
    @WanderingMind, видят редактирование. –  Stéphane Chazelas 17.05.2016, 20:04

Вот жемчуг один:

perl -ne 'print && exit if $c==3; $c++ if /<Car>/;' file 

С GNU grep, можно также проанализировать его вывод как:

grep -A 1 -m 3 '<Car>' file | tail -n 1

От man grep:

-A NUM, --after-context=NUM
          Print NUM lines of trailing context after matching lines.  
          Places a line containing a group separator (--) between 
          contiguous  groups  of  matches.          
-m NUM, --max-count=NUM
          Stop reading a file after NUM matching lines.  
4
27.01.2020, 20:09

С GNU awk можно сделать:

gawk -v RS='</Car>' 'NR==3 && $0=$2' inputFile
3
27.01.2020, 20:09

Вот простое решение для командной строки.

grep -F -A1 '<Car>' filename | grep -E -v '<Car>|--' | tail -n +3 |head -n +1

Если Вы изменяете значение +3 после tail, можно указать любую энную строку.

0
27.01.2020, 20:09
  • 1
    Не уверенный, почему Вы добавили теги, sed, awk, и т.д. Если Вы хотите решение с помощью определенного приложения, утилита затем, необходимо указать это рассматриваемое или заголовок. –  bsd 14.02.2014, 19:13

Вот еще один способ с sed :

sed -n '/<Car>/{x;/.\{2\}/{x;$!{n;p};q};s/.*/&./;x}' infile

Используется удерживаемое пространство для подсчета.
Каждый раз, когда он обнаруживает соответствие строки , он e x меняет буферы и проверяет, есть ли точно N-1 появления символа в буфере удержания. Если проверка прошла успешно, e x изменится снова, а если не в последней строке, он вытянет строку n ext, а p удалит пространство шаблонов. затем q uits. В противном случае он просто добавляет еще один . char в удерживаемое пространство, а e x возвращается обратно.

1
27.01.2020, 20:09

Теги

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