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{

请注意,这需要 GNUsed将转义序列解释\n为替换文本中的换行符。

对于非 GNU sed,你会写

/^SSID:/s/^/},\
{/

或者,如果您使用像“C 字符串”bash这样的shell 从命令行执行此操作:$'...'

sed '$/^SSID:/s/^/},\\\n{/'

\\\n代表逃脱,\后跟\n

相关内容