LINUX.ORG.RU

sed - удалить символы с X по Y


0

0

Как sed'ом удалить все символы с X по Y в каждой строке? man sed ниасилил (больно запутанный). Также хотелось бы услышать пояснения что к чему и как здесь должно делаться.

★★★★★

Re: sed - удалить символы с X по Y

s/[X-Y]//g

Slavaz ★★★★★ ()

Re: sed - удалить символы с X по Y

sed 's/X[^Y]*Y//g' или sed 's/X.*Y//g' , задача криво сформулирована.

Laz ★★★★★ ()

Re: sed - удалить символы с X по Y

> с X по Y в каждой строке

X и Y -- позиционные индексы в строке? Т.е. надо удалить, например, с 3 по 8 символы?

sdio ★★★★★ ()

Re: sed - удалить символы с X по Y

Команда cut часом не поможет?

svu ★★★★★ ()
Ответ на: Re: sed - удалить символы с X по Y от fat_angel

Re: sed - удалить символы с X по Y

В увлекательной игре "Битва экстрасенсов" победил sdio.

По теме: sed тут не нужен. Можно только лишь средствами bash обойтись.

$ ddd="1234567890"
$ echo ${ddd:2:4}
4567

Выводит четыре символа, начиная с третьей позиции

чтобы было "Т.е. надо удалить, например, с 3 по 8 символы?" пишем функцию:
$ substring(){ echo ${1:$2:($3-$2)} ; }
$ substring $ddd 3 8
45678

Slavaz ★★★★★ ()
Ответ на: Re: sed - удалить символы с X по Y от Slavaz

Re: sed - удалить символы с X по Y

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

remsubstring(){
while read ; do
echo -n ${REPLY::$1}; echo ${REPLY:$2:${#REPLY}-$2}
done
}
cat >test.txt <<EOF
1234567890
1234567890
1234567890
EOF

$ cat test.txt | remsubstring 3 8
12390
12390
12390

Заодно и для работы в составе конвейера переделал.

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