2017-10-08 86 views
1

這是例1的輸入:替代兩個空行與一個空行文件

a 


b 

和輸出:

a 

b 

這是示例2的輸入:

a 




b 

而輸出:

a 


b 

但是,一個巨大的文件。我曾嘗試:sed 's/\n\n/\n/g' file AMD cat file | tr '\n' '\t' | sed 's/\t\t/\t/g' | tr '\t' '\n'

+1

如果有3個或更多個相鄰的空行?你是否需要將每一對空行替換爲一個空行? – codeforester

回答

2

也有可能使用sed

sed '/^$/N;/^\n$/ s/\n//' <your_filename> 

將讀取下一行到模式空間(空之後),並且如果它也是空的,除去\ n

0

sed的一次讀取1條\n封端的線,所以你不能這樣做,因爲s/\n\n/anything絕不會有任何\n S IN緩衝區。

只需使用AWK:

awk -v RS= '1' file 

上面將由一個空行替換的空行的所有序列。如果這不是你需要的,那麼更新你的例子。

1

如果你特別想要替換爲一個,只需設置在gawkRS做到這一點:

gawk 'BEGIN{RS="\n\n"} 1' file 

如果你想的\n運行所取代,任意數量的,具有單\n設置awk到段落模式:

awk 'BEGIN{RS="" } 1'