помогите с grep [[: alpha:]] * -o - PullRequest
0 голосов
/ 12 марта 2010

file.txt содержит:

##w##

##wew##

с использованием mac 10.6, bash shell, команда:

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

ничего не выводит. Я пытаюсь извлечь текст внутри хэш-знаков. Что я делаю не так?

Ответы [ 3 ]

3 голосов
/ 12 марта 2010

(Обратите внимание, что в этом случае лучше передать имя файла в качестве аргумента grep вместо передачи вывода команды cat в grep: grep PATTERN file вместо cat file | grep PATTERN.)

Какую оболочку вы используете для выполнения этой команды? Я подозреваю, что ваша проблема заключается в том, что оболочка интерпретирует звездочку как подстановочный знак и пытается перетаскивать файлы.

Попробуйте процитировать свою модель, например, grep '[[:alpha:]]*' -o file.txt.

Я заметил, что это прекрасно работает с версией grep, установленной на моей машине с Linux, но grep на моем Mac требует команду grep -E '[[:alpha:]]+' -o file.txt.

1 голос
/ 12 марта 2010
sed 's/#//g' file.txt

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

/SCRIPTS [32]>  sed 's/#//g' file.txt
w
wew
0 голосов
/ 12 марта 2010

если у вас bash> 3.1

while read -r line
do
  case "$line" in
   *"#"* )
        if [[ $line =~ "^#+(.*)##+$" ]];then
            echo ${BASH_REMATCH[1]}
        fi
  esac    
done <"file"
...