2013-03-02 54 views
1

我試圖刪除除了在這裏bash的文件AZ字符和0-9的所有字符是我到目前爲止有:刪除所有角色期待AZ 0-9在bash

#!/bin/bash 
i=-1 
cat rtrans.txt | while read line 
do 
    i=$((i+1)) 
    for word in $line 
    do 
    echo "$i $word"|tr A-Z a-z|sed 's/[\._-]//g' 
    done 
done > input1.test 
使用sed它

然而好像我必須輸入所有我想刪除的不同非字符。

有沒有更好的方法來做到這一點?

回答

2

您可以使用一個字符類

echo "$i $word" | tr A-Z a-z | sed -e 's/[^a-z0-9]//g' 

這將刪除所有的字符^[a-z0-9]

如果你想文件分割成字和號線連續,你也可以嘗試

tr -s ' \t' '\n' <rtrans.txt | tr A-Z a-z | sed -e 's/[^a-z]//g' | nl -n ln -w1 -s ' ' 
+0

我忘了提及的空間爲好,但增加的數量範圍和字母範圍之間的空間似乎工作。 – Bob 2013-03-02 23:47:47