我有很多小写的文本,唯一的问题是,有很多特殊字符,我想用数字全部删除它。从Bash中的字符串中删除所有特殊字符
下一个命令它不够强大:
tr -cd '[alpha]\n '
在éćščž的情况下,有些人则返回“?”但我想删除所有这些。有没有更强的命令?
我使用Linux Mint的4.3.8(1)-release
我有很多小写的文本,唯一的问题是,有很多特殊字符,我想用数字全部删除它。从Bash中的字符串中删除所有特殊字符
下一个命令它不够强大:
tr -cd '[alpha]\n '
在éćščž的情况下,有些人则返回“?”但我想删除所有这些。有没有更强的命令?
我使用Linux Mint的4.3.8(1)-release
您可以使用tr
仅打印下面字符串中的可打印字符。只需在输入文件中使用以下命令即可。
tr -cd "[:print:]\n" < file1
标志-d
是指在输入流的参数定义的删除字符集和-c
是补充这些(倒像商提供的是什么)。因此,如果没有-c
,该命令将从输入流中删除所有可打印字符,并使用它补充它,方法是删除不可打印的字符。我们还保留换行符\n
以保留输入文件中的行尾。删除它只会产生一个大系列的最终产出。
[:print:]
只是一个POSIX bracket expression这是表达式[:alnum:]
,[:punct:]
和空间的组合。所述[:alnum:]
是相同[0-9A-Za-z]
[:punct:]
和包括字符!
"
#
$
%
&
'
(
)
*
+
,
-
.
/
:
;
<
=
>
?
@
[
\
]
^
_
`
{
|
}
~
我不完全某些地方的文字是从你的问题来,但让刚刚说的“不少小写文本中的”是所谓的文件special.txt
你可以不喜欢以下,但更专注于您想保留字符:
cat special.txt | sed 's/[^a-z A-Z]//g'
这是一个有点像做用斧头虽然手术。
在后Remove non-ascii characters from ...
如果上述方法都无法解决您的问题另一种可能的解决方案,请尽量提供更多的细节,我也许能提供一个更可行的答案。
每个角色都有自己的特色。 –
你的问题不是很清楚。给予更多的上下文可能会得到更多有用的回应。 –