2016-07-27 2 views
0

wpa_passphrase에서 생성 된 내용이 wpa_psk에 저장되어있는 경우 psk 콘텐츠를 bash 만 사용하거나 sed 또는 이와 비슷한 것을 사용해야합니까? 외부 명령없이bash를 사용하여이 매개 변수의 내용을 가져올 수 있습니까?

network={ 
    ssid="ssid" 
    psk=13ddde5c993709218f02296c238df70579dc392cc216c02356b483a2c2278187 
} 
+0

음인가? – Andrew

+1

@Andrew'sed'는 외부 명령입니다. – Kusalananda

+0

@Kusalananda 알아요.하지만 bash 스크립트와 터미널에서 사용할 수있는 무언가가 왜 bash가 아니라고 생각합니까? – Andrew

답변

1

이 같은 시도 할 수 있습니다 : 및 psk=를 포함하기 전에

part=${wpa_passphrase/*psk=/} 
psk=${part/??\}/} 

먼저 하나가 모든 것을 제거하고 두 번째는 }과 이전의 공간과 줄 바꿈을 제거합니다. sed

1

, 요청과 같이 표준 입력에서 라인을 읽어

IFS=$'\n= ' 
while read -r lhs rhs; do 
    if [[ "$lhs" == "psk" ]]; then 
     printf "%s\n" "$rhs" 
     break 
    fi 
done 

이 루프와 =에 그들을 분할합니다. lhs 변수는 =의 왼쪽에 있고 rhs은 오른쪽에 있습니다.

$lhspsk 인 경우 $rhs을 표준 출력에 인쇄하고 루프에서 벗어납니다.

1

:

sed -nE 's/^[[:blank:]]+psk=(.*)/\1/p' file.txt 

예 : ...`sed` 배쉬는

$ cat file.txt         
network={ 
    ssid="ssid" 
    psk=13ddde5c993709218f02296c238df70579dc392cc216c02356b483a2c2278187 
} 

$ sed -nE 's/^[[:blank:]]+psk=(.*)/\1/p' file.txt 
13ddde5c993709218f02296c238df70579dc392cc216c02356b483a2c2278187 
관련 문제