These are chat archives for dou-ua/linux

15th
Aug 2016
vzvlad
@vzvlad
Aug 15 2016 15:50
This message was deleted
vzvlad
@vzvlad
Aug 15 2016 15:55
Нещодавно перейшов на Ubuntu. Чи можна використати підстановку команди при використанні sed? Такий варіант видає помилку «Невідомий модифікатор до `s'» (пунктуація збережена):
echo $(pwd)/test | sed "s/$(pwd)/homeDir/"
Nikita Khomitsevich
@hamsternik
Aug 15 2016 16:09
можно попробовать что-то типа такого:
sed "s@$(pwd)@homeDir@"

и направить куда надо, к примеру

'> file.txt'

только без кавычек
vzvlad
@vzvlad
Aug 15 2016 16:13
спасибо, помогло. где прочитать как ведет себя @ в этом примере?
Nikita Khomitsevich
@hamsternik
Aug 15 2016 16:16

хм, может быть можно глянуть что-то по типу

sed replace symbol

для гугла фраза
vzvlad
@vzvlad
Aug 15 2016 16:16
понял, принял. спасибо
Nikita Khomitsevich
@hamsternik
Aug 15 2016 16:16
в доке сед я вроде не находил такого
vzvlad
@vzvlad
Aug 15 2016 16:19
разобрался. sed может как разделитель принимать @
Nikita Khomitsevich
@hamsternik
Aug 15 2016 16:20
нашел в доке sed?
Use a character as a delimiter which is not there in your text file like @.Example : sed 's@/@@g' file.txt
Nikita Khomitsevich
@hamsternik
Aug 15 2016 16:22
удобно то, что тут sed знает про переменные твоего shell'а
vzvlad
@vzvlad
Aug 15 2016 16:23
непонял, это не всегда может работать?
Nikita Khomitsevich
@hamsternik
Aug 15 2016 16:23
нет, как раз тут всегда
vzvlad
@vzvlad
Aug 15 2016 16:23
ну, а когда нет?
Nikita Khomitsevich
@hamsternik
Aug 15 2016 16:24

я про то, что в обычной записи

sed 's/$(pwd)/some_text/g' > file.txt

pwd как команда не будет работать

vzvlad
@vzvlad
Aug 15 2016 16:25
а, это не команда а переменная, правильно понял?
Nikita Khomitsevich
@hamsternik
Aug 15 2016 16:25
ага
в переменную помещен результат команды
vzvlad
@vzvlad
Aug 15 2016 16:27
я думал что часть внутри >$(…) обратывается shell'ом/bash'ем/чем-то-там-еще. как-то
Nikita Khomitsevich
@hamsternik
Aug 15 2016 16:30
просто шел чекает что внутри parenthesis, и потом запихивает это в переменную
если никуда не присвоить значение $(), то оно выполнит то, что внутри и никуда не запишет
vzvlad
@vzvlad
Aug 15 2016 16:31
я заметил это, когда в $() выпольнял cd. директория изменяется только в пределах этой части
Nikita Khomitsevich
@hamsternik
Aug 15 2016 16:32
да, потому как для этой команды будет вызываться свой подшел
vzvlad
@vzvlad
Aug 15 2016 16:34
thanks
Nikita Khomitsevich
@hamsternik
Aug 15 2016 16:35
;-)
Kostiantyn Rybnikov
@k-bx
Aug 15 2016 17:45
@hamsternik @vzvlad у ваших прикладах в першому використовуються подвійні кавички, в них баш робить підстановку змінних. в одинарних — ні.
➜  ~  FOO=asd
➜  ~  echo "$FOO"
asd
➜  ~  echo '$FOO'
$FOO