Вопрос

файл.txt содержит:

##w##

##wew##

используя Mac 10.6, оболочку bash, команда:

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

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

Это было полезно?

Решение

(Обратите внимание, что в этом случае лучше передавать имя файла в качестве аргумента 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.

Другие советы

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"
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top