質問

file.txtをが含まれています:

##w##

##wew##

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

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

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

役に立ちましたか?

解決

(grepに猫の出力をパイプの代わりにgrepするための引数としてファイル名を渡すために、このインスタンスで良好慣行であることに注意してください。代わりgrep PATTERN filecat file | grep PATTERN)を

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

例えば、あなたのパターンを引用してみgrep '[[:alpha:]]*' -o file.txtます。

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

他のヒント

sed 's/#//g' file.txt

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

/SCRIPTS [32]>  sed 's/#//g' file.txt
w
wew

あなたが持っている場合はbash> 3.1

while read -r line
do
  case "$line" in
   *"#"* )
        if [[ $line =~ "^#+(.*)##+$" ]];then
            echo ${BASH_REMATCH[1]}
        fi
  esac    
done <"file"
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top