Hilfe bei grep [[: alpha:]] * -o
Frage
file.txt enthält:
##w##
##wew##
mit mac 10.6, Bash-Shell den Befehl:
cat file.txt | grep [[:alpha:]]* -o
gibt nichts aus. Ich versuche, den Text innerhalb der Hash-Zeichen zu extrahieren. Was mache ich falsch?
Lösung
(Beachten Sie, dass es besser ist, die Praxis in diesem Fall die Dateinamen als Argument übergibt grep stattdessen die Ausgabe von cat von kochend zu grep. grep PATTERN file
statt cat file | grep PATTERN
)
Was Shell Sie diesen Befehl auszuführen verwenden? Ich vermute, dass Ihr Problem ist, dass die Shell das Sternchen als Platzhalter interpretiert und versucht, Dateien glob.
Versuchen Sie Ihr Muster zu zitieren, zum Beispiel grep '[[:alpha:]]*' -o file.txt
.
Ich habe bemerkt, dass diese in Ordnung mit der Version von grep funktioniert, dass auf meinem Linux-Rechner, aber das grep auf meinem Mac den Befehl grep -E '[[:alpha:]]+' -o file.txt
erfordert.
Andere Tipps
sed 's/#//g' file.txt
/SCRIPTS [31]> cat file.txt
##w##
##wew##
/SCRIPTS [32]> sed 's/#//g' file.txt
w
wew
Wenn Sie bash> 3.1
while read -r line
do
case "$line" in
*"#"* )
if [[ $line =~ "^#+(.*)##+$" ]];then
echo ${BASH_REMATCH[1]}
fi
esac
done <"file"