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?

War es hilfreich?

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"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top