// g是什么意思?

时间:2014-03-05 19:49:10

标签: bash sed

我正在查看bash文件,我不知道以下几行:

sed s/
//g < setenv.sh > setenv.sh2

运行脚本时,我总是在第2行遇到错误:

//g: No such file or directory

他试图在这做什么呢?

3 个答案:

答案 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