在字符串变量bash脚本的数组中查找特殊字符

问题描述 投票:1回答:2

这是关于在文本文件中查找带有特殊字符的单词并将其分开。

例如:我有一个名为temp.txt的文件,具有以下值。文件可以包含n个值,但我仅以4个为例。

Ag$thyg
bacde
\RTysdre
stack

所以,我希望没有特殊字符的值存储在另一个文件中。

arrays bash file grep special-characters
2个回答
3
投票

您可能可以使用此sed:

sed -i.bak 's/[^a-zA-Z0-9_-]*//g' file

这将删除每个不是字母数字或下划线或连字符的字符。

但是我想您需要更好地定义特殊字符。

EDIT:根据注释,您可以使用grep:

grep -v '[^a-zA-Z0-9_-]' file > newfile

或其他:

egrep '^[a-zA-Z0-9_-]+$' file > newfile

2
投票

像这样使用tr

tr -d "[^a-zA-Z0-9]" < yourfile

并在方括号内列出您特别讨厌的所有多余字符!此刻,tr将删除(-d)所有不区分大小写的字母和数字。

如果要将输出保存到新文件,请执行以下操作:

tr -d "[^a-zA-Z0-9]" < yourfile > newfile
© www.soinside.com 2019 - 2024. All rights reserved.