sed:-e 表达式#1,字符 3:意外的“,”

sed:-e 表达式#1,字符 3:意外的“,”

我使用运行脚本./myshfile.sh actors

sed -n -e "1,$1p" test.txt > test2.txt && mv test2.txt test.txt

产生以下错误,我找不到原因......

sed: -e expression #1, char 3: unexpected `,'

尝试使用单引号

sed -n -e '1,$1p' test.txt > test2.txt && mv test2.txt test.txt

但这会产生另一个错误

sed: -e expression #1, char 4: unknown command: `1'

答案1

在 中"1,$1p"$1被 shell 扩展,sed看到1,actorspactorsp不是有效的 sed 地址,因此会出现错误。不过,错误文本对我来说看起来有点奇怪,它似乎被识别a为命令,然后又回去想知道逗号。

在 中'1,$1p'$1不是被壳展开,sed看到1,$1p$是一个有效的地址,它用于标记最后一行,因此1,$简单地表示“所有行”。1但不是有效的命令,因此它是一个错误。

您没有说明您的意图,因此很难提供帮助。

答案2

尝试使用分隔符,

sed -n -e "1,/$1/p" test.txt

您尝试的代码将扩展为,

sed -n -e 1,actorsp test.txt

其中 sed 会将 optionp作为正则表达式的一部分actorp。因此,在正则表达式和选项之间使用分隔符以使其起作用。

相关内容