Domanda

file.txt contiene:

##w##

##wew##

utilizzando mac 10.6, shell bash, il comando:

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

emette nulla. Sto cercando di estrarre il testo all'interno dei segni di hash. Che cosa sto facendo di sbagliato?

È stato utile?

Soluzione

(Si noti che è meglio pratica in questo caso per passare il nome di file come argomento grep invece di pipe l'output di gatto di grep:. grep PATTERN file anziché cat file | grep PATTERN)

Cosa guscio stai usando per eseguire questo comando? Ho il sospetto che il tuo problema è che la shell interpreta l'asterisco come carattere jolly e cercando di glob file.

Prova indicando il modello, ad esempio, grep '[[:alpha:]]*' -o file.txt.

Ho notato che questo funziona bene con la versione di grep che è sulla mia macchina Linux, ma il grep sul mio Mac richiede il comando grep -E '[[:alpha:]]+' -o file.txt.

Altri suggerimenti

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

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

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

se avete bash> 3.1

while read -r line
do
  case "$line" in
   *"#"* )
        if [[ $line =~ "^#+(.*)##+$" ]];then
            echo ${BASH_REMATCH[1]}
        fi
  esac    
done <"file"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top