nel*_*aro 1 linux sed command-line
sed '/\r$/ {N s/\n//}'
sed: -e expression #1, char 10: 命令后的额外字符
我想了解我的命令行有什么问题。当我可以在脚本中但不能在命令行中执行以下某些操作时。
我一直在学习 www.grymoire.com 上的教程。当我被困在“使用多行”部分时 。这些脚本工作正常。
#!/bin/sh sed' # 在行尾寻找“#” /#$/ { # 找到一个 - 现在在下一行阅读 N # 删除“#”和换行符, s/#\n// }' 文件
就我而言,我正在寻找 \r 或返回 ^M。
#!/bin/sh sed' # 在行尾寻找“#” /\r$/ { # 找到一个 - 现在在下一行阅读 N # 删除“#”和换行符, s/\r\n// }' 文件
问题是当我尝试将其转换为单行 shell 命令时,它给了我一个错误。
sed '/\r$/ {N s/\n//}'
sed: -e expression #1, char 10: 命令后的额外字符
sed '/\r$/{N s/\n//}'
sed : -e 表达式 #1, char 9: 命令后的额外字符
sed '/\r$/{Ns/\n//}'
sed: -e 表达式 #1, char 8: 命令后的额外字符
我想了解我的命令行有什么问题。当我可以在脚本中但不能在命令行中执行以下操作时。
我创建了一个 sed 脚本来完成我想要的工作。
猫测试.sed #!/bin/sed -f /\r$/ { N s/\n// }
您需要使用分号;
来分隔sed
同一行上的命令。具体来说,在N
和之间s
。有换行符时不需要分号,这就是您的脚本表单有效的原因。
改变
sed '/\r$/ {N s/\n//}'
Run Code Online (Sandbox Code Playgroud)
到
sed '/\r$/ {N; s/\n//}'
^
Run Code Online (Sandbox Code Playgroud)