0

file.txtに含まれるもの:

##w##

##wew##

mac 10.6、bashシェル、コマンドを使用して:

cat file.txt | grep [[:alpha:]]* -o

何も出力しません。ハッシュ記号内のテキストを抽出しようとしています。私は何が間違っているのですか?

4

3 に答える 3

3

(この場合、catの出力をgrep:grep PATTERN fileではなくgrepにパイプするのではなく、引数としてファイル名をgrepに渡す方が適切であることに注意してくださいcat file | grep PATTERN。)

このコマンドを実行するためにどのシェルを使用していますか?あなたの問題は、シェルがアスタリスクをワイルドカードとして解釈し、ファイルをグロブしようとしていることだと思います。

パターンを引用してみてくださいgrep '[[:alpha:]]*' -o file.txt。例:

これは私のLinuxマシンにあるバージョンのgrepで正常に機能することに気づきましたが、私のMacのgrepにはコマンドが必要grep -E '[[:alpha:]]+' -o file.txtです。

于 2010-03-12T05:06:11.103 に答える
1
sed 's/#//g' file.txt

/SCRIPTS [31]> cat file.txt
##w##
##wew##

/SCRIPTS [32]>  sed 's/#//g' file.txt
w
wew
于 2010-03-12T05:10:17.667 に答える
0

bashが3.1を超える場合

while read -r line
do
  case "$line" in
   *"#"* )
        if [[ $line =~ "^#+(.*)##+$" ]];then
            echo ${BASH_REMATCH[1]}
        fi
  esac    
done <"file"
于 2010-03-12T06:25:07.373 に答える