2014-03-02 2 views
0

Я хотел бы изменить определенную строку в текстовом файле.Редактирование текстового файла для изменения содержимого по определенному номеру строки

Я попытался с этим

perl -p -i -e "s/JAI/ramkrishna/ if $. == 37" test.tex 

Но это только удаление JAI но не писать ramkrishna.

+1

рассмотреть возможность добавления входа на свой вопрос, так что легче для нас чтобы помочь вам, т.е. 'echo 'abcJAIxyx" | perl -i ... 'что с этим происходит? Удачи. – shellter

+2

работает для меня: '{seq 36; echo привет мир JAI; } | perl -p -e "s/JAI/ramkrishna/if $. == 37" '- вы ** уверены **, что JAI появляется в строке 37? Попробуйте: 'perl -ne 'print" $. $ _ "' Test.tex' –

+0

, если его« все еще не работает », и вы создали свой файл в Windows и перенесли его в Unix/Linix, есть вероятность, что' \ r \ n' line endings из Windows, и они должны быть закрыты для '\ n' окончаний строк, используемых Linux. 'dos2unix test.tex' исправит это. Удачи. – shellter

ответ

1

Ваша команда работает нормально. Наверное, у вас неправильный номер строки?

С test.tex файлом, как этого

aa 
bb 
cc 
aa bb cc JAI dd ee ff 
bb 
cc 
aa bb cc JAI dd ee ff 
xx 
yy 
zz 

командованием

perl -p -i -e 's/JAI/ramkrishna/ if $. == 7' test.tex 

изменяет файл

aa 
bb 
cc 
aa bb cc JAI dd ee ff 
bb 
cc 
aa bb cc ramkrishna dd ee ff 
xx 
yy 
zz 
+0

Спасибо. Работает. Может быть, в то время я делал что-то неприятное. – ramkrishna

+0

Теперь я хотел бы изменить номер строки с помощью пользовательского ввода, например count = 7 perl -p -i -e 's/JAI/ramkrishna/if $. == $ count 'test.tex но он не работает. – ramkrishna

+0

@ramkrishna: Как вы устанавливаете 'count'? Является ли это переменной окружения? Вы можете получить доступ к ним через '% ENV'. Попробуйте 'count = 7 perl -e'print $ ENV {COUNT} ''. – Borodin

1
sed '37s/JAI/ramkrishna/' filename 
+0

Спасибо. Работает. Теперь я хотел бы изменить номер строки с помощью пользовательского ввода, например count = 7 sed '(' $ count ') s/JAI/ramkrishna /' filename но его не работает. – ramkrishna

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