Sed脚本以大写文本文件中的“ I”

nickeb96

我正在尝试创建一个sed命令,该命令在文本文件中将的代词大写例如“我喜欢狗”。应该是“我喜欢狗”。到目前为止,我有:

sed 's/ i / I /g'

这在许多不同的情况下都不起作用。就像i周围有标点符号一样

这是我认为该命令应该能够处理的方案的列表:

  • 一行文字中有多个' i '。我认为这可以通过g在末尾加上标志来解决
  • i ”周围有标点符号。例如,其后的逗号或句号,或之前或之后的引号或括号。
  • i ”是该行的第一个或最后一个字符。这意味着您不能只检查其周围是否有空格或标点符号。
  • 一言以蔽之,任何常规的“ i ”都不在话下。例如“FREFghter”不应被变成“FREFghter”。
用户名

假设您使用的是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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

创建脚本以重新启动主机名位于文本文件中的计算机

使用sed从文本文件中删除特定的行号?

Python:大写文本文件中的特定单词

如何运行批处理脚本以在文本文件中获取输出

使用Java中的文件I / O,如何仅在文本文件中使用具有不同数据的一组特定数据?

如何使用Shell脚本和sed删除文本文件中的字符串后缀?

如何编写文本文件,然后在相同的Bash脚本中读取文本文件?

批处理脚本以在Notepad ++中打开文本文件

将文本文件导入python脚本以运行终端命令

Perl脚本-在文本文件中搜索名称

如何编写php脚本以删除与文件中其他行重复的行数据。当文本文件中的每一行用冒号分隔时

您如何将文本文件中的行读入i32s元组的向量中?

使用i而不是j加载具有复数的文本文件

使用C ++进行文件I / O以计算文本文件中的某些字符或单词

使用CUT(或SED)从文本文件中删除列

如何使用sed从文本文件中删除脚本标签

Bash脚本仅乘以文本文件中的数字?

用数字递增替换列i文本文件

批处理脚本以创建大文本文件

Shell脚本以文本文件中的T + 2更新日期(T)

在python中写入文本文件时发生错误[关闭文件的I / O操作]

用sed替换文本文件中的路径

无法从文本文件中删除^ I结尾

当我没有重定向输出或使用`sed -i`的权限时,如何更改文本文件的内容

Python文件I / O:实现将一个文本文件的内容复制到一个空文本文件的功能

批处理脚本以获取文本文件的大小

使用 i 为 Python 中的虚数导入文本文件

写入文本文件 - I/O 错误

批处理文件脚本以在计数大于 > 时删除文本文件中的行