我正在查看bash文件,我不知道以下几行:
sed s/
//g < setenv.sh > setenv.sh2
运行脚本时,我总是在第2行遇到错误:
//g: No such file or directory
他试图在这做什么呢?
答案 0 :(得分:4)
看起来这是从文件中删除换行符的破坏尝试。
sed s/<enter|return>//g
当然,它不起作用 - sed是换行符。只是加入线可能不会做你想要的,除非在第一个斜线和换行符之间有一个不可见的字符。否则你最终会得到
sed s///g
你应该做的是识别你想要的字符(换行符,回车符,两者?),并使用tr -d
tr -d $'\n' < file > file.nonewlines
tr -d $'\r' < file > file.nocarriagereturns
tr -d $'\r\n' < file > file.nocrlfs
答案 1 :(得分:0)
在动作周围缺少引号或双引号以及新行的转义,这肯定是更大脚本的一部分,其中工作缓冲区中可能有多行。它可能来自脚本的打印副本
sed '#other action before this like H or N
s/\
//g' < setenv.sh > setenv.sh2
对于g
它意味着每次出现替换(s ///)但错误来自错误的第一个模式(转义输入)
答案 2 :(得分:0)
/ g标志不仅会导致每行中第一次出现,而且还会导致所有。
echo "ggg" | sed -e 's/g/j/'
# jgg
echo "ggg" | sed -e 's/g/j/g'
# jjj