如何使用sed来删除非英语语言中的非字母数字字符



我正在努力消除非英语语言中@#$%^&*(){}[]/后面的非字母字符。

这是一个输入的例子

* การันตีการเข้าถึง วันละมากกว่า 20,000 วิว (Banner A)
ทุกวันนี้ @
"เว็บไซต์ประชาไท" #
ดำเนินการผลิตข่าวและเผยแพร่บทความ อย่างต่อเนื่องผ่านเว็บไซต์ prachatai.com วันละ 10-15 ชิ้น พร้อมทั้งเผยแพร่ทาง facebook และ twitter
ทั้งหมดนี้อยู่ภายใต้การดำเนินงานของ $
$นักข่าว %
%กองบรรณาธิการ ^
&
*
(
)
[
]

/

我有一个命令

cat test.txt | sed "s/[^[:alnum:]]//g"

哪种能胜任这项工作。这是输出

การันตีการเขาถึงวันละมากกวา20000วิวBannerA
ทุกวันนี
เวบไซตประชาไท
ดำเนินการผลิตขาวและเผยแพรบทความอยางตอเนืองผานเวบไซตprachataicomวันละ1015ชินพรอมทังเผยแพรทางfacebookและtwitter
ทังหมดนีอยูภายใตการดำเนินงานของ
นักขาว
กองบรรณาธิการ




正如你所看到的,它删除了字符,但也删除了单词之间的空格,.字符、,和左空行。

如何删除这些字符,但仍保留单词之间的空格并删除不必要的空行?并保留点和逗号?

有没有办法只使用一个字符列表?如CCD_ 4?

考虑使用tr。它是一个纯粹的过滤器;它只读取标准输入并写入标准输出。-d选项删除指定的字符。出于您的目的,您似乎可以使用:

tr -d '@#$%^&*(){}[]\/' < test.txt

这将只剩下字母、数字、空格、点、逗号、冒号和分号,仅举几个例子。唯一的问题是反斜杠需要加倍。

输出:

การันตีการเข้าถึง วันละมากกว่า 20,000 วิว Banner A
ทุกวันนี้ 
"เว็บไซต์ประชาไท" 
ดำเนินการผลิตข่าวและเผยแพร่บทความ อย่างต่อเนื่องผ่านเว็บไซต์ prachatai.com วันละ 10-15 ชิ้น พร้อมทั้งเผยแพร่ทาง facebook และ twitter
ทั้งหมดนี้อยู่ภายใต้การดำเนินงานของ 
นักข่าว 
กองบรรณาธิการ 




输入有15行;输出也有15行。

cat test.txt | sed "s/[]@#$%^&*(){}/[]//g"

注意]在字符类开头的位置,以避免对其进行特殊处理。

最新更新