помогите с grep [[:alpha:]]* -o
Вопрос
файл.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"