使用 bash 脚本过滤掉输入字符串中的 ABC 字符、数字 123 和特殊字符

Filter out ABC characters, numeric 123 and special characters out of input string using bash scripting

我想从用户那里获取字符串输入并做一些 bash 处理以过滤掉一个文件中的 ABC 字符,另一个文件中的 123 个数值和另一个文件中的 @#$ 特殊字符。

输入字符串: ABCD1234!@#

输出:

cat file1.txt: ABCD 
cat file2.txt: 1234
cat file3.txt: !@#

我尝试了某些 cut 和 awk 命令,但没有找到任何解决方案。在其他语言中找到了许多解决方案,但在 bash.

中找不到
echo "abc123#@" | tr -dc '0-9' && echo "abc123#@" | tr -dc 'a-z'

我无法从中提取所有特殊字符。还有如何从一个命令。或 bash 脚本?如果我的问题有意义

您可以为此使用这个 awk 命令:

str='ABCD1234!@#'

awk '{
   p = q = r = [=10=]
   gsub(/[^[:alpha:]]+/, "", p)
   gsub(/[^[:digit:]]+/, "", q)
   gsub(/[[:alnum:]]+/, "", r)
   print p > "file1.txt"
   print q > "file2.txt"
   print r > "file3.txt"
}' <<< "$str"