我有很多小寫的文本,唯一的問題是,有很多特殊字符,我想用數字全部刪除它。從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 ...
如果上述方法都無法解決您的問題另一種可能的解決方案,請儘量提供更多的細節,我也許能提供一個更可行的答案。
每個角色都有自己的特色。 –
你的問題不是很清楚。給予更多的上下文可能會得到更多有用的迴應。 –