是否可以“就地”(-i)运行sed解释器脚本?
#!/usr/bin/sed -if
#sed commands...
这给了我以下错误:
/usr/bin/sed: -e expression #1, char 7: unknown command: `f'
我试图搜索它,但我发现只有#!/usr/bin/sed -nf
(出于某种原因可以正常工作)。
顺便说一句:我知道我可以运行bash脚本和sed -i
命令,但感觉不对:D
编辑:
我只是更正了一些JSON配置文件。使用python JSON解析器删除所有格式和注释(!),这对我不起作用。我已尝试过sed -i -f
sed -f -i
等所有可能的组合。
编辑:
对于那些不信的人:这是整个剧本。希望你喜欢它:D
#!/usr/bin/sed -if
# Tabs - change height
/\/\/ Tab set/,/\}\,/ {
s/"tab_width": .*,/"tab_width": 50,/;
s/"tab_height": .*,/"tab_height": 27,/;
}
# VScroll bar
/\/\/ Overlay vertical puck/,/\}\,/ {
# Width
s/"content_margin": .*/"content_margin": [3,38],/
# Color
/content_margin/ {
a\
"layer0.tint":[173,216,230],
a\
"layer0.opacity": 0.2,
}
}
# HScroll bar - width
/\/\/ Overlay horizontal puck/,/\}\,/ {
s/"content_margin": .*/"content_margin": [16,3],/
}
# Status bar - height
/\/\/ Status bar container/,/\}\,/ {
s/"content_margin": .*/"content_margin": [15, 4]/
}
# Side bar - rows
/\/\/ Sidebar tree || entries/,/\}\,/ {
s/"row_padding": .*/"row_padding": [8,5],/
s/"indent_offset": .*/"indent_offset": 10,/
}
# Side bar - folder icon
/\/\/ Sidebar folder opened/,/\}\,/ {
s/"layer0.texture": "Seti_UI\/icons\/folder_open@2x.png",/"layer0.texture": "Seti_UI\/icons\/folder@2x.png",/
}
答案 0 :(得分:2)
根据this answer on unix.stackexchange,这不起作用,因为#!
行上不能(可移植地)使用多个参数。答案是可接受的(至少对我而言)解决方法。