에 추가할 기본 sed 스크립트를 작성하려고 합니다 SSID:
. 지금 시도하고 있는 작업은 다음과 같습니다.
#!/bin/sed -f
/^SSID:/ s/*/},\n{/
다음을 입력:
SSID: '2KLIC Guests'
BSSID: F0:9F:C2:21:03:BA
MODE: Infrastructure
FREQ: 2437 MHz
RATE: 16 MB/s
SIGNAL: 100
SECURITY: WPA2
ACTIVE: yes
SSID: 'CBMS-2.4GHz'
BSSID: 10:BE:F5:25:FD:60
MODE: Infrastructure
FREQ: 2412 MHz
RATE: 16 MB/s
SIGNAL: 0
SECURITY: WPA WPA2
ACTIVE: no
SSID: 'CIK1000M_AC2.4G_3714'
BSSID: D0:60:8C:03:DB:B4
MODE: Infrastructure
FREQ: 2422 MHz
RATE: 16 MB/s
SIGNAL: 0
SECURITY: WPA2
ACTIVE: no
나도 탈출을 시도했다 :
. 내가 여기서 뭘 잘못하고 있는지 설명할 수 있는 사람이 있나요?
답변1
전체 라인을 교체하면 됩니다.
s/^SSID:.*/},\n{/
SSID
줄의 일부 또는 전부를 유지하려면 초기 정규식에서 캡처해 보세요.
s/^\(SSID:.*\)/\1\n},\n{/
답변2
당신의 sed
표정:
/^SSID:/ s/*/},\n{/
이는 거의 정확하지만 *
리터럴과 일치합니다 *
(정규식의 첫 번째 문자이므로).
수정하려는 행의 주소 지정 모드를 사용하십시오.
/^SSID:/s/^/},\n{/
그러면 문자열로 시작하는 모든 줄을 찾아 SSID:
해당 줄의 시작 부분을 바꿉니다.},\n{
이를 위해서는 GNU가 sed
이스케이프 시퀀스를 \n
텍스트의 개행 문자로 해석해야 한다는 점에 유의하십시오.
GNU가 아닌 경우에는 sed
다음과 같이 작성합니다.
/^SSID:/s/^/},\
{/
또는 bash
"C-String"과 같은 셸을 사용하여 명령줄에서 이 작업을 수행하는 경우:$'...'
sed '$/^SSID:/s/^/},\\\n{/'
( \\\n
탈출을 \
나타내고 \n
)