2
A
回答
4
3
用一個替換所有尾隨的新行?
$text =~ s/\n+$/\n/;
這使得與一個換行符的文件在最後–如果它有至少一個開始。如果你想讓它在那裏,即使文件沒有,請用\n*
替換\n+
。
對於就地說明書中,這意味着一個班輪:
perl -i -0777 -wpe 's/\n+$/\n/' file.txt
開關的含義Command Switches in perlrun進行說明。
這裏是對交換機的總結。請參閱上述文檔以獲得準確的解釋。
-i
更改文件「到位」。請注意,數據仍被複制並使用臨時文件。-0777
讀取整個文件。-0[oct|hex]
設置$/
的數字,所以無效與-0
-w
使用warnigs。不完全一樣use warnings
,但有總比沒有好-p
在''
運行的代碼依次對文件的每一行,像-n
,然後$_
打印-e
''
之間接下來的執行Perl代碼
-E
是相同的,但也使feature S,像say
注意,我們可以通過使用核心O和B::Deparse模塊看到的等效代碼作爲
perl -MO=Deparse -wp -e 1
這將打印
BEGIN { $^W = 1; }
LINE: while (defined($_ = <ARGV>)) {
'???';
}
continue {
print $_;
}
-e syntax OK
表示腳本相當於一個襯墊與-w
和-p
。
1
perl -i -0 -pe 's/\n\n*$/\n/' input-file
1
到目前爲止發佈的解決方案將您的整個輸入文件讀入內存,如果您的文件很大,這將是一個問題。這隻讀取連續的空行到內存中:
awk -i inplace '/./{printf "%s", buf; buf=""; print; next} {buf = buf $0 ORS}' file
以上使用GNU awk進行就地編輯。
相關問題
- 1. 如何在每個句柄中添加尾隨換行符?
- 2. 只在行尾替換字符串
- 3. 解析文件中只需要的行
- 4. 如何獲得隨機nubmer +1或-1(只需要它爲「+」或「 - 」)
- 5. 如何在fgets()後刪除多個尾隨換行符?
- 6. 要使用哪行結尾/換行符?
- 7. EF多個外鍵只需要1個
- 8. LINQ將不需要的尾隨空格放在字符串上
- 9. 需要解析一個字符串直到文件末尾
- 10. 使用作曲家只需要1個文件?
- 11. Mysql返回多行,只需要1
- 12. 在fgets中是否需要換行符?
- 13. 需要將ZIP文件轉換爲隨機文本文件
- 14. 只在必要時刪除一個雙的尾隨零
- 15. 從文件末尾清除2個換行符字符
- 16. 多個接口 - 只需要1的ID
- 17. Sklearn set_params只需要1個參數?
- 18. TypeError:Init只需要1個位置參數
- 19. E488:尾隨字符:#### gvim的源文件
- 20. 當從JObject轉換爲XDocument時需要保留尾隨零
- 21. 隨機尾隨字符在C中打印一個字符串
- 22. 需要跳過輸入文件中的換行字符(\ n)
- 23. 執行sed時不需要換行符中的換行符
- 24. 爲什麼\ w +匹配一個尾隨的換行符?
- 25. 我需要一個JTextArea,它在行的末尾計算該行中的字符
- 26. Excel:如何只替換尾隨的字符串?
- 27. 尾隨字符%
- 28. 在bat文件的末尾添加一行忽略換行符
- 29. render()在Django中只需要1個參數(給出2)error
- 30. 我需要一個CSV文件,包含1行saveas
沒有任何UNIX工具可以進行真正的「就地」編輯,它們都會創建一個臨時文件(或者'ed'的內部緩衝區)並用它覆蓋原始文件。那是問題嗎? –
不,臨時文件只要透明即可。我不想處理備份文件。 – Joe