我想在比赛后打印下一个句子
我的文件内容如下:
SSID:CoreFragment
Passphrase:WiFi1234
SSID:CoreFragment_5G
Passphrase:WiFi1234
SSID:Aleph_inCar
Passphrase:1234567890
根据我的搜索,例如如果发现WIFI-3(SSID)
,则要打印1234ABCD
。我使用此命令搜索SSID:
grep -oP '^SSID:\K.+' file_name
搜索之后,我要打印该特定匹配项的密码。
我正在使用Ubuntu 18.04
ssid=$(grep -oP '^SSID:\K.+' list_wifi.txt) for ssid in $(sudo iwlist wlp2s0 scan | grep ESSID | cut -d '"' -f2) do if [ $ssid == $ssid_name ]; then echo "SSID found..."; fi done
我想在比赛后打印下一行。
答案 0 :(得分:1)
awk -F: '/WIFI-3/{getline;print $2; exit}' file
1234ABCD
答案 1 :(得分:1)
鲁棒性(由于部分匹配等原因而失败),并且惯用地:
$ awk -F':' 'f{print $2; exit} ($1=="SSID") && ($2=="WIFI-3"){f=1}' file
1234ABCD
答案 2 :(得分:1)
另一个awk
$ awk -F: -v s="$ssid" '$0=="SSID:"s{c=NR+1} c==NR{print $2; exit}' file
1234ABCD
仅在下一行显示该值。
答案 3 :(得分:0)
由于代码标签已更改示例的外观,因此请立即添加。
var=$(awk '/SSID:[a-zA-Z]+-[0-9]+/{flag=1;next} flag{sub(/.*:/,"");value=$0;flag=""} END{print value}' Input_file)
echo "$var"
请您尝试以下。
awk '/Passphrase/ && match($0,/WIFI-3 Passphrase:[0-9a-zA-Z]+/){val=substr($0,RSTART,RLENGTH);sub(/.*:/,"",val);print val;val=""}' Input_file
答案 4 :(得分:0)
请尝试以下操作:
ssid="WIFI-3"
passphrase=$(grep -A 1 "^SSID:$ssid" file_name | tail -n 1 | cut -d: -f2)
echo "$passphrase"
产生:
1234ABCD
答案 5 :(得分:0)
使用Perl
$ export ssid="WIFI-3"
$ perl -0777 -lne ' /SSID:$ENV{ssid}\s*Passphrase:(\S+)/ and print $1 ' yash.txt
1234ABCD
$ export ssid="Aleph_inCar"
$ perl -0777 -lne ' /SSID:$ENV{ssid}\s*Passphrase:(\S+)/ and print $1 ' yash.txt
1234567890
$
$ cat yash.txt
SSID:CoreFragment
Passphrase:WiFi1234
SSID:CoreFragment_5G
Passphrase:WiFi1234
SSID:Aleph_inCar
Passphrase:1234567890
SSID:WIFI-1
Passphrase:1234ABCD
SSID:WIFI-2
Passphrase:123456789
SSID:WIFI-3
Passphrase:1234ABCD
您可以将其捕获为变量
$ passphrase=$(perl -0777 -lne ' /SSID:$ENV{ssid}\s*Passphrase:(\S+)/ and print $1 ' yash.txt)
$ echo $passphrase
1234567890
$