LINUX.ORG.RU

bash Заменить текст на определенной строке

 


1

2
sed '4 s/A/B/' testfile.txt

Данная команда на 4 - той строке находит А и заменяет на В.

Как ее написать в bash скрипте, когда строка указана как переменная? нужно чтобы только в указанной строке текстового файла изменялся А на В, у меня почему то получается на всех строках.

Еще лучше, если возможно будет, на четвертой строке, А в первом столбце заменить на В.

Спасибо.


var=4
sed $var' s/A/B/' testfile.txt

Оно и так заменит в первом столбце, т.к. без g работает только раз - man sed

AKonia ★★
()
Последнее исправление: AKonia (всего исправлений: 2)

в первом столбце

Столбцов не существует, это не структурированные данные а обычная строка.

1  2  3  4    # злесь четыре "элемента"
   1234  5    # здесь два, первым является '1234'
1     6  7    # здесь три, '6' является вторым
3  9          # здесь два

Как ее написать в bash скрипте, когда строка указана как переменная?

Одинарные кавычки (') содержат текст как есть, переменные в одинарных кавычках не разворачиваются. В двойных кавычках (") переменные разворачиваются, но там может развернуться и то, что разворачиваться не должно.

# эта переменная будет развёрнута:
echo "${HOME}"

# эта переменная развёрнута не будет:
echo '${HOME}'

# эта переменная будет развёрнута, но отобразится в одинарных кавычках:
echo "'${HOME}'"

# эта переменная развёрнута не будет, и отобразится в двойных кавычках:
echo '"${HOME}"'

# а можно делать так (обрати внимание на отсутствие пробела между разными кавычками):
echo '${HOME}'"${HOME}"
mord0d ★★★★★
()
Ответ на: комментарий от AKonia

Да, вы правы. Работает данный метод. Благодарю.

merdan
() автор топика
Ответ на: комментарий от ashot

А bash тут при том, что …?

…он не даёт развернуть переменную в одинарных кавычках. ☺

mord0d ★★★★★
()
Ответ на: комментарий от merdan

Все получилось

Отметь тему решённой. Ни на что не влияет, но для порядка. ☺

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