在 Linux 中用 sed 替换点、感叹号和问号
Replace dot, exclamation and ask sign with sed in Linux
我正在尝试使用此代码
sed "s/\!{2,}/\!/g" "s/\?{2,}/\?/g" "s/\.{2,}/\./g" file.txt
它几乎可以工作,但它不能取代圆点
-输入就像
您好!!!你好吗?? .....
-输出应该是
您好!你好吗?
在大括号 { 和 } 前添加反斜杠
sed 使用 posix 基本正则表达式,其语法要求在大括号(和分组圆括号)前加一个反斜杠以赋予它们特殊的含义。
否则它匹配文字字符 { 和 }
echo -n foo | sed -e 's/o\{2,\}/o/g'
$ echo "Hello!!! How are you?? ....." | sed -r 's/\.+/./g; s/\?+/?/g; s/!+/!/g'
Hello! How are you? .
我的回答可能有点"off tag",这里用tr好像是最短路线
tr -s '?.!'
对文件使用 tr
tr -s '?.!' < '/root/Desktop/test'
回声示例
echo 'hello!!! my name is John...how are you??'| tr -s '?.!'
输出
hello! my name is John.how are you?
# posix
sed 's/\([.?!]\)\{1,\}//g' file.txt
# GNU
sed 's/\([.?!]\)+//g' file.txt
一次性使用 class 进行 1 次操作
我正在尝试使用此代码
sed "s/\!{2,}/\!/g" "s/\?{2,}/\?/g" "s/\.{2,}/\./g" file.txt
它几乎可以工作,但它不能取代圆点
-输入就像
您好!!!你好吗?? .....
-输出应该是
您好!你好吗?
在大括号 { 和 } 前添加反斜杠
sed 使用 posix 基本正则表达式,其语法要求在大括号(和分组圆括号)前加一个反斜杠以赋予它们特殊的含义。 否则它匹配文字字符 { 和 }
echo -n foo | sed -e 's/o\{2,\}/o/g'
$ echo "Hello!!! How are you?? ....." | sed -r 's/\.+/./g; s/\?+/?/g; s/!+/!/g'
Hello! How are you? .
我的回答可能有点"off tag",这里用tr好像是最短路线
tr -s '?.!'
对文件使用 tr
tr -s '?.!' < '/root/Desktop/test'
回声示例
echo 'hello!!! my name is John...how are you??'| tr -s '?.!'
输出
hello! my name is John.how are you?
# posix
sed 's/\([.?!]\)\{1,\}//g' file.txt
# GNU
sed 's/\([.?!]\)+//g' file.txt
一次性使用 class 进行 1 次操作