bash - 删除不包含“a、i、o”的单字词
问题描述
我正在创建一个 shell 脚本,它将标准输入和输出转换为标准输出。目前我已经将所有内容都转换为小写。我还需要删除不是“a”、“i”或“o”的单字符单词。
这是我尝试过的:
grep -o '[a-z]\{2,\}' | while read WORD
- 这成功地删除了所有单字母单词。
这里的愿望,
- ./file.sh < myText.txt
鉴于 myText.txt 有类似“Sample text t I o im”的内容
输出:
sample text i o im
如果 awk、sed 或其他 bash 内置程序工作得更好,我很想听听。
任何帮助表示赞赏,只是想学习。
解决方案
如果perl
是您的选择,如何:
perl -lane 'print join(" ", grep {tr /A-Z/a-z/; !/^[^aio]$/} @F)' myText.txt
输出:
sample text i o im
推荐阅读
- python - 将目标函数传递给自定义多处理类
- bash - 如何在 shell 管道中使用不同的文件描述符?
- wpf - 无法让 ScrollViewer 在 ItemsControl>WrapPanel 中工作
- javascript - 选项卡可访问的弹出式导航的两个问题我使用了一些建议
- rust - 遵循 rust book 时出错
- javascript - 在 Angular 10 中显示 ng-content 两次
- r - 根据 R 中数据集的名称创建一个新变量
- ios - 检测用户何时尝试在整个应用程序中全局下载照片到他们的照片库
- reactjs - Web 套接字限制传入数据
- spring-boot - 在谷歌云平台哪里可以找到数据库表?