LINUX.ORG.RU

Нулевой параметр в bash


0

1

Пытался гуглить, но нужного не нашел. Есть скрипт вида:

line1="В изобретении заявлен механизм..."
line2="В изобретении заявлена схема..."
line3="В изобретении заявлено изобретение..."

echo "$line1"|sed 's/заявлен[,а,о]/is directed to/'
echo "$line2"|sed 's/заявлен[,а,о]/is directed to/'
echo "$line3"|sed 's/заявлен[,а,о]/is directed to/'

Объясните, пожалуйста:

1) Почему «заявлена», «заявлено» заменяется, а «заявлен» - нет;

2) Можно ли line1, line2, line3 объединить в одну переменную? echo «${line[1,2,3]}» не работает

Deleted

Последнее исправление: Deleted (всего исправлений: 1)

1. Не попадает под шаблон

2. можно echo «$line1 $line2 $line3»

sdio ★★★★★
()

1. Так как [,а,о] — character класс, состоящий из запятой, а, о

Наиболее непонятный способ будет сделать так:

lines=("$line1" "$line2" "$line3")
for line in "${lines[@]}"; do
  sed -r 's/заявлен[[:alpha:]]?/is directed to/' <<< "$line"
done
[/bash]

anonymous
()
line1="В изобретении заявлен механизм..."
line2="В изобретении заявлена схема..."
line3="В изобретении заявлено изобретение..."

echo "$line1"|sed 's/заявлен\?/is directed to/'
echo "$line1"|sed 's/заявлен\?/is directed to/'
echo "$line1"|sed 's/заявлен\?/is directed to/'
anonymous
()
line1="В изобретении заявлен механизм..."
line2="В изобретении заявлена схема..."
line3="В изобретении заявлено изобретение..."

echo "$line1"|sed 's/заявлен\?/is directed to/'
echo "$line1"|sed 's/заявлен\?/is directed to/'
echo "$line1"|sed 's/заявлен\?/is directed to/'
anonymous
()
#!/bin/sh

line1="В изобретении заявлен механизм...\nВ изобретении заявлена схема...\nВ изобретении заявлено изобретение..."
echo -e "$line1"|sed 's/заявлен[,а,о]\?/is directed to/'
x-signal ★★
()
Ответ на: комментарий от x-signal

Спасибо! Как раз то, что надо.

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