file.txtに含まれるもの:
##w##
##wew##
mac 10.6、bashシェル、コマンドを使用して:
cat file.txt | grep [[:alpha:]]* -o
何も出力しません。ハッシュ記号内のテキストを抽出しようとしています。私は何が間違っているのですか?
(この場合、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
です。
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"