2011-07-01 66 views
2

我有一個空行的文件,我需要將文件中的行加倍。這意味着我需要在兩行之間有一段空白的文本。你能告訴我一個簡單的方法使用awk和/或sed的做sed/awk雙空間文件

+0

你想在現有的空行做什麼? –

回答

9

試試這個

sed '/^$/d' fileName | sed G 
+1

+1首先帶有工作解決方案 –

0
[email protected]:/tmp$ cat test.txt 
test 
tset 2 
test 3 
test 4 
[email protected]:/tmp$ sed 's/\(.*\)/\1\n/' test.txt 
test 

tset 2 

test 3 

test 4 

賽的sed G test.txt作品還可以,但我不知道怎麼樣。

+0

'如何':在第一遍中,刪除所有空行(假設行不包含空格);在第二遍中,您將保留空間的內容(==空行,因爲我們什麼也不放)添加到每行,然後打印它。 – gnometorule

0

試試這個

awk '{print $0 "\n"}' fileName 
+0

這很好。我需要在源文件的每一行之前添加空白行來增加空間,所以只需簡單地執行'awk'{print「\ n」$ 0}''。 –

0

假設你想保持現有的空行原封:

awk ' 
    prev && $0 {print ""} 
    {print; prev = $0} 
' 

如果同時上一行和當前行是非的第一個測試只會是真實的空。

5

使用sed

$ sed G input.txt | cat -s 
4

假設:

  1.你要做到這一點,在短短SED
  2.您希望做這一切在一通
  3.一些您的「空白」行可能包含製表符
  4.當前間距不均勻(每行之後有0,1或更多空白)
  5.您是否希望統一的雙間距

落得試試這個:

#!/bin/sed -f 
/^[ \t]*$/d 
/^..*$/a\ 

第一行說:            如果你看到一個「空行」,將其刪除。
第二行說:如果你看到一個非空行,在它後面追加一行。

0

假設:

  1.你要做到這一點,在短短AWK
  2.您希望做這一切在一通
  3.你的一些「空白」行可能包含標籤|空格
  4.當前間距不均勻(每行之後有0,1或更多空格)
  5。你想與均勻雙間距

落得試試這個:

awk '$0 !~ /^[ \t]*$/ { print $0, "\n" }' <file> 

打破這件事,

  的部分大括號說前:   比賽唯一的非空行
  大括號內的部分表示:   打印此行並追加一行(空白)

0
sed -n 's/.*/&\n/p' 

&\n應該工作,我猜

0

使用awk:

# double space a file 
$ awk '1;{print ""}' file 

另一種方式

# or like this 
$ awk 'BEGIN{ORS="\n\n"};1' file 

Awk one-liners