我正在使用 Ubuntu 并且有一個大型文本檔案,其中某些行以<字符開頭,我想將其中的每一行替換為空行。所以從這里:
eeeeee
<
<
aaaa
bbbb
cccc
<
dddddd
<
ff
我要這個:
eeee
aaaa
bbbb
cccc
dddddd
ff
(如果有多個連續<行,理想情況下只需要一個空行)
如何在命令列中執行此操作?
uj5u.com熱心網友回復:
這個 Perl 單行代碼應該可以滿足您的要求:
perl -ne 'if (/^</) {print "\n" if !$f; $f=1} else {$f=0; print}' tmp.txt
這是在行動:
# cat tmp.txt
eeeeee
<
<
aaaa
bbbb
cccc
<
dddddd
<
ff
# perl -ne 'if (/^</) {print "\n" if !$f; $f=1} else {$f=0; print}' tmp.txt
eeeeee
aaaa
bbbb
cccc
dddddd
ff
注釋代碼:
# Found a line starting with '<'
if (/^</) {
# Print a blank line if $f is false
print "\n" if !$f;
# Set $f to true so subsequent lines starting with '<' are ignored
$f=1;
} else {
# Not a line starting with '<'; reset $f to false
$f=0;
# Print the current line
print;
}
uj5u.com熱心網友回復:
你可以使用 sed。在這種情況下,命令看起來像這樣:
sed '/</c\\' file.txt
這將找到一個開頭帶有 '<' 字符的行,并將該行替換為空。但是,它不會用單行替換多個空行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/442234.html
上一篇:memcpy性能不佳
