Скопируйте шаблон соответствия строки в около другой строки шаблона соответствия с помощью sed

Поместите их в a .sh файл в ~/.kde/env/ (возможно ~/.kde4/env/ или подобный; варьируется распределением).

1
15.07.2011, 21:52
2 ответа

Я не уверен, точно ли это, что Вы хотите, но:

  1. Когда Вы видите интересную строку (строка, содержащая www.website.com), скопируйте его в пространство хранения.
  2. Когда Вы видите текст для замены (thetext), добавьте содержание пространства хранения, и
  3. очистите результат.
sed -e '/www\.website\.com/h' \
    -e '/thetext/{' -e 'G' -e 's/\n//' -e '}'

Я действительно рекомендую обратиться к awk для чего-либо вне плоскости s///.

awk '
    /www\.website\.com/ { line=$0 }
    /thetext/ { $0 = $0 line }
    1'
1
27.01.2020, 23:29

Можно также использовать ed (здесь используемый в Bash оболочка), чтобы переместиться и присоединиться к строкам следующим образом:

str='
Lorem ipsum dolor sit amet, elit.
Cras eu www.website.com velit vitae
Pellentesque interdum
thetext
Sed ullamcorper tellus
'

# cf. http://wiki.bash-hackers.org/howto/edit-ed
cat <<-'EOF' | sed -e 's/^ *//' -e 's/ *$//' | ed -s <(echo "$str")
   H
   /www\.website\.com/m/thetext/
   -1,.j
  ,p
  q
EOF

Если Вы собираетесь отредактировать оперативные файлы, ed может быть Ваш предпочтительный инструмент.

2
27.01.2020, 23:29

Теги

Похожие вопросы