削除しますが、\n削除しません。\n\n

削除しますが、\n削除しません。\n\n

データ

23. Lorem
A) he
B) ha
C) hu
c

2. Ipsun yes right to write something here?
A) Ok
B) No 
C) yes
b

292. Ipsun
A) Apex
B) hello
b

289. He
A) hu
B) Ha
C) He
The right answer is:
1) Ab
2) Abc
3) Ac
2

Quizlet.comの構文要件を満たすには、代替エントリを返す必要があります。

23. Lorem A) he B) ha C) hu
c    
2. Ipsun yes right to write something here? A) Ok B) No C) yes 
b
292. Ipsun A) Apex B) hello
b
289. He A) hu B) Ha C) He The right answer is: 1) Ab 2) Abc 3) Ac
2

s/\n//gこれにより、Vimのすべてのスペースが削除されます。

Perl または Vim から \n をすべて削除し、\n\n を削除する方法は? 私はそれが必要だと思います。視野二度目がないことが分かるまでは交換できないからです。 \n。

答え1

新しいGNU sed(パラメータ-zを使用)は一度だけ実行できます。

sed -z 's/\n\(\n\|[A-Z0-9][)a-z]\)/ \1/g' DATA

答え2

awk+を使用しますかsed?のための:

$ cat quiz 
23. Lorem
A) he
B) ha
C) hu
c

2. Ipsun yes right to write something here?
A) Ok
B) No 
C) yes
b

走る

$ awk NF=NF RS= OFS=' ' quiz | sed 's/\([a-z]$\)/\n\1/' 

23. Lorem A) he B) ha C) hu 
c
2. Ipsun yes right to write something here? A) Ok B) No C) yes 
b

答え3

私は正規表現に対処するのが好きですが、実際には上手だとは感じません。私はあなたが望むものを2つのステップで行います:

$ perl -i.bak -0pe  's/\n([A-Z])/ \1/g' DATA
$ less DATA
23. Lorem A) he B) ha C) hu
c

2. Ipsun yes right to write something here? A) Ok B) No  C) yes
b

次に、Emacsからsedor関数などの空白行を削除します。flush-lines

$ sed '/^$/d' -i DATA
$ less DATA
23. Lorem A) he B) ha C) hu
c
2. Ipsun yes right to write something here? A) Ok B) No  C) yes
b

または、:Vimを押して次を貼り付けます/^$/d

編集する:

$ perl -i.bak -0pe 's/\n([A-Z0-9]\))/ \1/g' DATA

答え4

構文は次のとおりです。vimの否定的な予測次のようになります。

:s/\n\n\@!//gN

N何行はどこにありますか?パールから、これは〜になります:

s/\n(?!\n)//

しかし、c、出力例では、両方ともb独自の行にあるので、これはまさにあなたが望むものではないことに気付くでしょう。後ろに他の改行が来ないすべての改行を置き換えると、前の行に関連付けられます。つまり、次のようになります。

23. LoremA) heB) haC) huc
2. Ipsun yes right to write something here?A) OkB) No C) yesb  

関連情報