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

関連情報