我正在尝试编写一个基本的 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
)