我正在尝试创建一个sed命令,该命令在文本文件中将我的代词大写。例如“我喜欢狗”。应该是“我喜欢狗”。到目前为止,我有:
sed 's/ i / I /g'
这在许多不同的情况下都不起作用。就像i周围有标点符号一样。
这是我认为该命令应该能够处理的方案的列表:
g
在末尾加上标志来解决。假设您使用的是GNU sed,一种方法是
sed 's/\([[:space:]]\|[[:punct:]]\)i\([[:space:]]\|[[:punct:]]\)/\1I\2/g'
或类似的东西。仍然保留以“ i like dogs”开头的行的情况,因为代词前没有空格。解决此问题的一种方法是
sed 's/\(^\|[[:space:]]\|[[:punct:]]\)i\([[:space:]]\|[[:punct:]]\)/\1I\2/g'
当您在“ ii”中使用连续的“ i”时,这种情况仍然存在,但我无法想到在英语文本中会出现这种情况的任何原因,除非当正确的短语为“ aye”时错误地写了“ ii sir”好的,先生'。
如果还使用小写的罗马数字,则边缘也很粗糙。sed脚本无法分辨“ i”是代词还是罗马数字,但实际上没有很好的解决方案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句