我用来tr
解析文本并执行多项任务,例如小写所有单词、删除标点符号和多个空格。最终结果应该是干净的小写文本,仅包含字母数字字符,除非在特定情况下:
word$digit
例如
house$999
除了这种情况之外,公式非常简单。例如,对于删除标点符号的情况,我会使用空格替换它
tr '[:punct:]' ' '
只需使用管道来获取其余所需输出即可。例如,
tr '[:upper:]' '[:lower:]' < $1 | tr '[:punct:]' ' ' | ... > $2
但是,我在尝试弄清楚如何定义异常以便$
保留字母数字字符和一组数字之间的符号,同时删除其他实例和所有其他标点符号时遇到了一些麻烦。
答案1
根据@xenoid的回答,以下代码对我有用
echo -e "Hello.\n;132\$And; Another\$98?';:" | sed -e 's/\([[:alpha:]]\+\)\$\([[:digit:]]\+\)/\1 THIS \2/g' -e 's/[[:punct:]]//g' -e 's/ THIS /$/g' | tr '[:upper:]' '[:lower:]'
结果是:
hello
132and another$98