スポンサーリンク

catの-sオプションで連続した複数の空白行を1行にする

※MACターミナル(BSD系)での動作確認です。
例えば、下記のファイルがあったとします。

 $ cat file.txt 
awk
find



ls


grep

catで-sオプションを付けると、下記のように、連続した複数の空白行が1行になります。
 $ cat -s file.txt 
awk
find

ls

grep

スポンサーリンク

awkで書いてみた

awkを使って書いてみました。
他に良い書き方があるかもれませんね。

 $ cat sample.awk 
#!/bin/sh
cat file.txt | awk '		
	{
		if($0 == ""){
			flag++
		}else{
			flag = 0
		}
		if($0 != "" || flag == 1){
			print $0
		}
	}
'

下記が実行結果になります。
 $ ./sample.awk 
awk
find

ls

grep

スポンサーリンク