我想更改文本文件中的特定行。編輯文本文件以更改特定行號的內容
我試圖與這
perl -p -i -e "s/JAI/ramkrishna/ if $. == 37" test.tex
但它僅僅是刪除JAI
但不寫ramkrishna
。
我想更改文本文件中的特定行。編輯文本文件以更改特定行號的內容
我試圖與這
perl -p -i -e "s/JAI/ramkrishna/ if $. == 37" test.tex
但它僅僅是刪除JAI
但不寫ramkrishna
。
你的命令工作得很好。我猜你的行號錯了?
隨着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
謝謝。它的工作。也許那時候我正在做一些令人討厭的事情。 – ramkrishna
現在我想用用戶輸入更改行號,如 count = 7 perl -p -i -e's/JAI/ramkrishna/if $。 == $ count'test.tex 但它不起作用。 – ramkrishna
@ramkrishna:你如何設置'count'?它是一個環境變量嗎?你可以通過'%ENV'來訪問它們。嘗試'count = 7 perl -e'print $ ENV {COUNT}''。 – Borodin
sed '37s/JAI/ramkrishna/' filename
謝謝。它的工作。 現在我想更改行號與用戶輸入,如計數= 7 sed的「(」 $計數「)S/JAI /拉瑪克里斯納/」文件名 但其不工作。 – ramkrishna
考慮增加輸入你的問題,所以這對我們來說是比較容易來幫助你,例如'echo「abcJAIxyx」| perl -i ...'發生了什麼?祝你好運。 – shellter
適合我:'{seq 36;回聲你好JAI世界; } | perl -p -e「s/JAI/ramkrishna/if $。== 37」' - 你肯定** JAI出現在第37行?如果'仍然不能正常工作,並且你已經在Windows上創建了你的文件並將它移動到了Unix/Linix,那麼可以使用'perl -ne'print'$。$ _''test.tex' –
'\ r \ n'從Windows中結束,並且需要將它們轉換爲Linux使用的'\ n'行結尾。 'dos2unix test.tex'會解決這個問題。祝你好運。 – shellter