1

bashファイルで文字azと0-9以外のすべての文字を削除しようとしていますが、これまでのところ次のとおりです。

#!/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では、削除したいすべての異なる非文字を入力する必要があるようです。

これを行うより良い方法はありますか?

4

2 に答える 2

3

文字クラスを使用できます

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 ' '
于 2013-03-02T23:43:43.640 に答える