我有一个文件,每一行都有一个句子,例如
Random stuff,
"First sentence",
"second sentence.",
"Third sentence!"
More Random Stuff,
等等...
我只想在上面的示例中修改带引号的行,即第二,第三和第四行。
我要进行以下修改-
在行尾添加句号(如果不存在句号或感叹号)
使第一个字符大写(如果尚未大写)
我尝试了以下解决方案以添加句号-
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,
最佳答案
这可能对您有用(GNU sed):
sed -E '/^".*",/{s/[[:alpha:]]/\U&/;s/([^!?.])",$/\1.",/}' file
只关注引号行。如果不是感叹号/问号或句点,则将第一个字母大写并在结束引号前插入句点。