質問は多かれ少なかれそれをすべて言います。私はそれ/^$/d
がすべての空白行を削除することを知っていますが、「2つ以上の空白行を単一の空白行に置き換える」と言う方法がわかりません
何か案は?
質問は多かれ少なかれそれをすべて言います。私はそれ/^$/d
がすべての空白行を削除することを知っていますが、「2つ以上の空白行を単一の空白行に置き換える」と言う方法がわかりません
何か案は?
回答:
他の用途でvimやsedを使用していない場合、catには複数の空白行を折りたたむ簡単な組み込み方法がありますcat -s
。
あなたはvimの中に存在していたし、そこに滞在したい場合は、内部検索でこれを行うと、発行することによって置き換えることができます::%s!\n\n\n\+!^M^M!g
(^ Mは、改行を視覚的に表現され、あなたが押すことによって、それを入力することができますCtrl+をvEnter)、または自分でセーブcat:に砲撃するだけで入力します:%!cat -s
。
:%!cat -s
。毎日GNnewを学んでください!
%s!\n\n\n\+!\r\r!g
\n
検索パターンの改行を示すために使用します。置換テキストまたは後方参照でCtrl+ Mを使用します。:help pattern
および:help sub-replace-special
(からリンク:help :s
)を参照してください。
%s/\(\n\n\)\n\+/\1/
\n
は機能しません。
Vimの場合は、次のようにします。
:%!cat -s
man
ページからの単なる引用であっても、これがどのように機能するかについて少し詳細を追加したい場合があります。
私はこれが愚かなコードであることを知っていますが、この問題を10分以内に解決したかったのですが、うまくいきました
for file in /directory/*
do
originalname=$file
us='_'
tempname=$file$us
echo $originalname
mv $originalname $tempname
uniq $tempname $originalname
rm $tempname
done
uniq
隣接する等しい行を削除します。これはOPが望んでいるものではありません。
-s
猫のオプションを知らなかった-ちょうど歴史的なメモ、それはPOSIXではありませんが、BSDとGNU猫で利用できるようです。