gpt4 book ai didi

linux - sed 表达式出现错误

转载 作者:太空宇宙 更新时间:2023-11-04 04:14:16 25 4
gpt4 key购买 nike

我在 shell 脚本中使用此命令

lnum=5
str="Hello foo"
filename="/path/fiename"

sed -i "$lnum i $str" $filename

出现以下错误

sed: -e expression #1, char 3: : doesn't want any addresses

我之前曾在其他脚本中使用过此命令,它工作得很好,这次我所做的唯一更改是文件名具有文件的路径,但我尝试通过进入路径并执行脚本来仅给出文件名而不是路径,但它仍然不起作用

我无法解决这个问题,谁能帮忙

最佳答案

如果您使用 OSX、BSD(和 AIX)版本的 sed,则 -i 就地编辑标志的备份扩展不是可选的

我相信 GNU sed 在这方面有所不同,因此该脚本可以在 Linux 上运行。

这对于可移植性来说有点麻烦 - 但是当使用 BSD 派生的 sed 时,“就地”编辑会变得更糟。这个版本的 sed 在某些方面可以说更“标准”(例如:“POSIX 系统的最低公分母”),但这种行为似乎是一个错误:

sed: 1: "5 i hello foo": command i expects \ followed by text

以下是我如何让您的脚本在多种 BSD 风格上运行:

lnum="5"
str="Hello foo"
filename="sed-mess.txt"

sed -i "" "$lnum i\^M
$str" $filename

我必须使用 Ctrl-v [Return] 输入文字行结束符才能使 i 命令正常工作,因为 \ 是必需的,并且后面不能有任何内容。不确定 GNU sed 如何处理这个问题。

你能使用perl吗? ;-)

关于linux - sed 表达式出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17470697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com