这个问题与Delete a network profile from wpa_supplicant.conf in Linux (raspbian).有关
使用以下命令,我们可以看到输出为文件的内容,并删除了匹配的 SSID 的网络 block 。
cat network_block_eg.conf | sed -n '1 !H;1 h;$ {x;s/[[:space:]]*network={\n[[:space:]]*ssid="example"[^}]*}//g;p;}'
问题是如何获得与匹配模式一样的输出(在本例中为 network={})。
例如命令输出
network={
ssid="example"
proto=WPA
key_mgmt=WPA-PSK
pairwise=TKIP
group=TKIP
psk="not so secure passphrase"
wpa_ptk_rekey=600
}
最佳答案
cat network_block_eg.conf | sed -n '/[[:space:]]*network={/ {:a; /}/! {N; ba;}; /ssid="example"/ p}'
sed命令解释,-n
抑制正常输出:
/[[:space:]]*network={/ { # in a line that matches start block pattern
:a # 'a' label to jump to
/}/! { # if pattern space not contains end block pattern
N # read next line and add it to pattern space
ba # jump back to 'a' label
}
/ssid="example"/ p # now if pattern space contains your desired ssid, print it out
}
关于linux - 使用 SED 实用程序输出不带替换的匹配模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50620870/