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

时间:2021-06-23 06:09:58

标签: awk cut

我想从用户那里获取字符串输入并进行一些 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脚本?如果我的问题有意义

1 个答案:

答案 0 :(得分:1)

您可以使用这个单一的 awk 命令:

str='ABCD1234!@#'

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