我需要过滤掉小写字符的输入。我尝试向命令提供一个文件:
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
告诉-p
perl 为你编写一个程序。指定-i
对输入文件进行备份test.txt
并将其命名test.txt.bak
。启用-w
警告(如果您犯了错误或输入错误,则很好),并且-e
表示以下文本是您希望执行的代码。