过滤掉小写字符的输入

过滤掉小写字符的输入

我需要过滤掉小写字符的输入。我尝试向命令提供一个文件:

cat ws2.txt | sed "s/[a-zA-Z0-9]/[A-Z]/g"

答案1

我不确定您是否正在尝试将较低的转换为较高的或一起删除较低的。尝试一下从下到上的转换。

tr [:lower:] [:upper:] < ws2.txt

要修剪小写字符,您可以使用sed

sed -e 's/[a-z]//g' ws2.txt

或者您可以tr按照@fd0的建议使用

tr -d '[:lower:]' < ws2.txt

要修剪数字和大写字母,请使用(现在听起来像您想要的)。

tr -d '[A-Z0-9]' < ws2.txt

答案2

假设您已经perl安装(使用which perl,如果安装了,输出应该类似于/usr/bin/perl),您可以执行 perl one-liner 并调整正则表达式根据您的喜好。

perl -p -i.bak -w -e 's/[a-z]//g' test.txt            # strips lowercase

或者

perl -p -i.bak -w -e 's/([a-z])/\U$1/g' test.txt     # converts to uppercase

告诉-pperl 为你编写一个程序。指定-i对输入文件进行备份test.txt并将其命名test.txt.bak。启用-w警告(如果您犯了错误或输入错误,则很好),并且-e表示以下文本是您希望执行的代码。

相关内容