LINUX.ORG.RU

Составить регулярное выражение

 ,


0

1

Здравствуйте.

Имеется файл, в котором записаны,буквы 1)abcd

2)abcdd

2)a b c d

Нужно убрать пробелы между буквами и повторяющиеся буквы,с помощью команды grep,с использованием регулярных выражений Подскажите, как это можно реализовать?

Получилось убрать ток повторение ,а как убрать пробелы?

grep -vE "([a -z])\1" file1.txt


как с grep не знаю

 tr -d ' ' or sed 's/ //g'

gnu_linux
()

Здравствуйте.

Имеется файл, в котором записаны буквы:

abcd
abcdd
a b c d

Нужно убрать строки, в которых есть пробелы между буквами и повторяющиеся буквы с помощью команды grep. Подскажите, как это можно реализовать?

Пока у меня получилось убрать только строку с повторяющимися буквами:

grep -vE "([a-z])\1" file1.txt

А как убрать строку с пробелами?

anonymous
()
Ответ на: комментарий от Vera

Тогда твоя часть, где «удаляются двойные буквы» работает не правильно — это во-первых. Во-вторых, я даже не уверен, что это можно сделать grep’ом, да и зачем там изощряться, если есть более подходящие инструменты, например sed.

Ты можешь задание дословно процитировать?

anonymous
()
Ответ на: комментарий от Vera

Но, то, что вы собрали самостоятельно убирает строку с дубликатами букв.

hanharr
()
Ответ на: комментарий от anonymous

Выбрать последовательность неповторяющихся символов в алфавитном порядке.Пробелы нужно игнорировать. Примеры: abcdefghijk — Да abbc — Нет

Vera
() автор топика
Ответ на: комментарий от Vera
#!/usr/bin/bash

alphabet=$(echo {a..z} | tr -d ' ')
while read line; do
    space_free_line=$(echo $line | sed -r 's/\s//g')
    (echo $alphabet | grep -iq $space_free_line) && echo "$line"
done < $1

Пожалуйста. Статус выхода будет ненулевой, если последняя строчка не совпадёт с алфавитом. Сама поправишь, если сильно надо.

Почитай вот эту статью о том, как оформлять сообщения.

anonymous
()
Ответ на: комментарий от WitcherGeralt

Сессия, наверно, какое-то задание по регуляркам уже всплывало недавно.

gedisdone ★★★
()

Получилось убрать ток повторение ,а как убрать пробелы?
grep -vE "([a -z])\1" file1.txt

Если вот эта регулярка — это «получилось убрать повторение», то подозреваю, что искомое решение — grep -vE "(\S)\s*\1" file1.txt

Но на устном экзамене тебя завалят, потому что у тебя каша в голове. Ты никак не можешь сформулировать, что тебе надо выбирать: строки или символы из строк, и если символы, то надо их переставлять в каком-либо порядке или не надо, и чем можно пользоваться: grep'ом, grep'ом и bash'ем (который, между прочим, Тьюринг-полный язык программирования) или вообще чем угодно из POSIX.

proud_anon ★★★★★
()

Первый раз я за тебя решил, второй не буду. У тебя нет шансов сдать, лучше расслабься и посмотри киношку по зомбоящику, один фиг тебе осенью на пересдачу. Peregrine.

anonymous
()
Ответ на: комментарий от Vera

Ладно. Чуток помогу, хотя считаю это бесполезным. Bash это шелл. В нём вообще что угодно может быть, хоть твои скрипты и программы, если ты их в Path (такая переменная в которой хранятся адреса директоий с бинариками которые шелл должен уметь запускать как команды) положил. Есть POSIX, это такой здоровый стандарт по совместимости разных Unix. Он в том числе (но это не главное, т.к. главное это сишные стандарты, до которых простым админам нет дела) имеет раздел оболочка и утилиты. В нём описан стандарт того что должно быть в шелле sh (более ранний предок bash). Есть регулярные выражения. Это такой недоязык (не полный по тьюрингу, что значит что на нём нельзя реализовать любую вычислимую функцию, а вот bash и sh полны) для замен и поиска в тексте. Есть grep, который умеет сам работать с текстом по урезанным регуляркам и расширенным с ключем -E или через алиас (сокращение/модификация команды в bash) egrep. А ещё есть awk, однострочники на perl и прочие штуки, часть из которых входит в POSIX, а часть не входит. Если сможешь понять что я написал и что-то вспомнишь на экзамене, может поможет, если препод добрый будет.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.