2013-05-30 2 views
0

Я пытаюсь заменить строку моего файла. Я использовалзаменить строку bash script

line=" abc" 
sed -i "3c ${line}" test.txt 

Это работает, но первое место не отображается. Я хочу, чтобы линия 3 в test.txt быть

abc 

вместо

abc 

извещение есть пробел перед abc. спасибо за любые предложения!

ответ

0

Синтаксис команды замены sed: 's/match/replacement/'. Для того, чтобы найти абв и заменить его, вам нужно сделать что-то вроде:

line=" abc" 
sed -i "s/^abc$/$line/" test.txt 

персонажей ^ и $ регулярные выражения мета-символы для начала и конца строки, соответственно. Таким образом, ^abc$ будет соответствовать только строкам, содержащим именно этот шаблон, а затем заменить его на abc пробелом перед ним.

+0

'abc' - это то, что он добавляет, а не что-то подходящее для замены. – Barmar

1
line="\ abc" 
sed -i "3c\ 
$line" test.txt 

Экранирование пространства не позволит его обрезать.

Смежные вопросы