sed 스크립트는 ?로 시작하는 줄에 추가됩니다.

sed 스크립트는 ?로 시작하는 줄에 추가됩니다.

에 추가할 기본 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)

관련 정보