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

Posted

技术标签:

【中文标题】使用 bash 脚本从输入字符串中过滤掉 ABC 字符、数字 123 和特殊字符【英文标题】:Filter out ABC characters, numeric 123 and special characters out of input string using bash scripting 【发布时间】:2021-09-06 16:29:42 【问题描述】:

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

【问题讨论】:

@anubhava echo "abc123#@" | tr -dc '0-9' && echo "abc123#@" | tr -dc 'a-z' 我无法从中提取所有特殊字符。还有如何从一个命令。还是 bash 脚本?如果我的问题有道理。 如果输入字符串是@ABCD1234PQR!@#78怎么办? file1、file2 和 file3 应该是什么? @anubhava 先生。文件 1 中的 ABC 或字母字符,文件 2 中的数字和文件 3 中的特殊字符。文件 1:ABCDPQR 文件 2:123478 文件 3:@!@#。如果我没有错过字符串中的任何字符。 【参考方案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"

【讨论】:

哇哦。这很酷。另外,我尝试将 print p > "file1.txt" 更改为 print q, print $q。这段代码可以在终端上显示结果还是我必须为此制作一个不同的脚本?先生,请指导我。 可以在终端打印,使用:print p, q, r

以上是关于使用 bash 脚本从输入字符串中过滤掉 ABC 字符、数字 123 和特殊字符的主要内容,如果未能解决你的问题,请参考以下文章

用于过滤多个字符串上的文件的 Pig 脚本/命令

试图从给定目录中过滤掉所有 .p12 和 .pfx 文件

请问正则表达式如何过滤超链接和提取链接

从字符串中过滤掉 url

如何使用 $lte 从 json 中过滤掉字符串值

猪过滤掉不匹配