首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用sed在标点符号后添加空格

使用sed在标点符号后添加空格
EN

Stack Overflow用户
提问于 2018-06-03 00:01:46
回答 1查看 359关注 0票数 0

我需要大写txt文件,但是当我尝试用sed在标点符号后添加一个空格时,我发现了一些问题。例如:"Hello,World“->到"Hello,World”

我尝试了以下几种方法:

代码语言:javascript
复制
#!/bin/bash
if [ $# != 1 ]; then
  echo "No parameter"
  exit
fi

cp $1 $1.bak
ARCH1=/tmp/`basename $1`.$$

sed 's/[A-Z]*/\L&/g' $1 > $ARCH1 
sed -i 's/^./\u&/' $ARCH1

sed 's/  */\ /g' $ARCH1 #Here I replace >= 2 spaces for 1
sed 's/, */, /g' $ARCH1

#These 2 lines don't work well
sed 's/. */. /g' $ARCH1
sed 's/; */; /g' $ARCH1

mv $ARCH1 $1

脚本没有崩溃,但是输出结果并不是我所期望的。

EN

回答 1

Stack Overflow用户

发布于 2018-06-03 03:02:27

使用GNU sed:

代码语言:javascript
复制
$ echo "foo;BAR,BaZ.qux" | sed -r 's/[[:punct:]]+/& /g; s/[[:alnum:]]+/\L\u&/g'
Foo; Bar, Baz. Qux

\L小写整个单词,然后\u大写第一个字符。

有关正则表达式文档,请参阅regex(7)手册页。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50658698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档