2016-02-29 3 views
0

У меня нет стандартного ответа о том, как использовать sed для замены определенной строки номером строки.Заменить строку на основе номера строки

Могу ли я знать, как это сделать?

Например, я пытался заменить линию 45 с помощью

sed -i '45s/*/T T F/' POSCAR 

Не работает ...

ответ

2

Добавить точку:

Заменить

sed -i '45s/*/T T F/' POSCAR 

по

sed -i '45s/.*/T T F/' POSCAR 

. : match any character

* : the preceding expression can match zero or more times

+0

СЕПГ -i "s/$ х $ у $ г TTF/$ х $ у $ ((г + 0,01)) TTF /" test -bash: 0.3688520225288983: синтаксическая ошибка: недействительный арифметический оператор (токен ошибки «.3688520225288983») Могу ли я узнать, как сделать арифметику в sed с помощью bash? –

+2

@LeiZhang, что совсем другой вопрос – ptierno

+0

@LeiZhang: Пожалуйста, начните новый вопрос. – Cyrus

0

Вы можете использовать perl для этой работы тоже.

perl -i '$. == 45 && $_ = "T T F\n"' POSCAR 

(Предполагая, что вы хотите заменить все строки 45)

+0

's/sed/perl /'? –

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