【发布时间】:2020-02-16 16:26:29
【问题描述】:
我有一个文件,每行一个句子,例如
Random stuff,
"First sentence",
"second sentence.",
"Third sentence!"
More Random Stuff,
等等……
我只想就地修改引用的行,即上面示例中的第 2、第 3 和第 4 行。
我想做以下修改 -
- 在行尾添加句号(如果没有句号或感叹号)
- 将第一个字符设为大写(如果尚未大写)
我尝试了以下解决方案来添加句号 -
sed -i 's/[^!.]",/.",/g' $file
上述命令将句子的最后一个字符删除为-
"First sentenc.",
如果我尝试以下命令 -
sed -i 's/[^!.]",/&.",/g' $file
我得到如下结果 -
"First sentence",.",
我想要的输出是 -
"First sentence.",
如何正确解决此问题而不会出现如上所示的不良结果? 另外,我怎样才能使第一个字符大写?
修改后的文件应该是-
Random stuff,
"First sentence.",
"Second sentence.",
"Third sentence!"
More Random Stuff,
【问题讨论】:
-
请将该示例输入的所需输出(无描述)添加到您的问题(无评论)。
-
嗨@Cyrus,我已经添加了我想要的输出。我一开始忘记添加了。
-
赞
sed 's/^"[[:lower:]]/\u&/;s/\([^.!]\)",/\1.",/' file?? -
@oguzismail 我认为需要进行较小的更正: sed 's/^"[[:lower:]]/\U&\E/;s/([^.!])",/\ 1.",/'文件。匹配的区域包括前导引号。需要将引号和's'都大写。
-
@dash-o 我一个字都不懂
标签: regex shell unix sed scripting