Excelでファイルを開く前にフォーマットする出力は次のとおりです。
1. |1.99934| BD | 1| C 1 - H 2
| 60.12%| 0.7754* C 1 s| 24.99%|p 3.00| 74.95%|d 0.00| 0.05%|
f 0.00| 0.01%|
| 39.88%| 0.6315* H 2 s| 99.94%|p 0.00| 0.06%|
2. |1.99934| BD | 1| C 1 - H 3
| 60.12%| 0.7754* C 1 s| 24.99%|p 3.00| 74.95%|d 0.00| 0.05%|
f 0.00| 0.01%|
| 39.88%| 0.6315* H 3 s| 99.94%|p 0.00| 0.06%|
3. |1.99934| BD | 1| C 1 - H 4
| 60.12%| 0.7754* C 1 s| 24.99%|p 3.00| 74.95%|d 0.00| 0.05%|
f 0.00| 0.01%|
| 39.88%| 0.6315* H 4 s| 99.94%|p 0.00| 0.06%|
4. |1.99934| BD | 1| C 1 - H 5
| 60.12%| 0.7754* C 1 s| 24.99%|p 3.00| 74.95%|d 0.00| 0.05%|
f 0.00| 0.01%|
| 39.88%| 0.6315* H 5 s| 99.94%|p 0.00| 0.06%|
出力が次のように「f」で始まる行を前の行に追加する方法が必要です。
1. |1.99934| BD | 1| C 1 - H 2
| 60.12%| 0.7754* C 1 s| 24.99%|p 3.00| 74.95%|d 0.00| 0.05%|f 0.00| 0.01%|
| 39.88%| 0.6315* H 2 s| 99.94%|p 0.00| 0.06%|
2. |1.99934| BD | 1| C 1 - H 3
| 60.12%| 0.7754* C 1 s| 24.99%|p 3.00| 74.95%|d 0.00| 0.05%|f 0.00| 0.01%|
| 39.88%| 0.6315* H 3 s| 99.94%|p 0.00| 0.06%|
3. |1.99934| BD | 1| C 1 - H 4
| 60.12%| 0.7754* C 1 s| 24.99%|p 3.00| 74.95%|d 0.00| 0.05%|f 0.00| 0.01%|
| 39.88%| 0.6315* H 4 s| 99.94%|p 0.00| 0.06%|
4. |1.99934| BD | 1| C 1 - H 5
| 60.12%| 0.7754* C 1 s| 24.99%|p 3.00| 74.95%|d 0.00| 0.05%|f 0.00| 0.01%|
| 39.88%| 0.6315* H 5 s| 99.94%|p 0.00| 0.06%|
SEDを使用してこれを実行しようとすると失敗しました!助ける! !
答え1
使用paste
:
$ paste -d '\n\0\n\n' - - - - <file
1. |1.99934| BD | 1| C 1 - H 2
| 60.12%| 0.7754* C 1 s| 24.99%|p 3.00| 74.95%|d 0.00| 0.05%|f 0.00| 0.01%|
| 39.88%| 0.6315* H 2 s| 99.94%|p 0.00| 0.06%|
2. |1.99934| BD | 1| C 1 - H 3
| 60.12%| 0.7754* C 1 s| 24.99%|p 3.00| 74.95%|d 0.00| 0.05%|f 0.00| 0.01%|
| 39.88%| 0.6315* H 3 s| 99.94%|p 0.00| 0.06%|
3. |1.99934| BD | 1| C 1 - H 4
| 60.12%| 0.7754* C 1 s| 24.99%|p 3.00| 74.95%|d 0.00| 0.05%|f 0.00| 0.01%|
| 39.88%| 0.6315* H 4 s| 99.94%|p 0.00| 0.06%|
4. |1.99934| BD | 1| C 1 - H 5
| 60.12%| 0.7754* C 1 s| 24.99%|p 3.00| 74.95%|d 0.00| 0.05%|f 0.00| 0.01%|
| 39.88%| 0.6315* H 5 s| 99.94%|p 0.00| 0.06%|
4行で構成される各グループから2番目の改行文字を削除したいように見えるので、上記のコマンドはpaste
まさにそれを行います。
答え2
Anはawk
グループ内の行数を表し、小文字で始まります。
awk -v ORS= '{print (($0!~"^[a-z]"&&NR>1)?"\n":"")$0}END{ print "\n"}' file
ORS
小文字で始まらない場合は、空白に設定して印刷します。最初の行の前に\n
置かないでください。$0
$0
\n
出力
1. |1.99934| BD | 1| C 1 - H 2
| 60.12%| 0.7754* C 1 s| 24.99%|p 3.00| 74.95%|d 0.00| 0.05%|f 0.00| 0.01%|
| 39.88%| 0.6315* H 2 s| 99.94%|p 0.00| 0.06%|
2. |1.99934| BD | 1| C 1 - H 3
| 60.12%| 0.7754* C 1 s| 24.99%|p 3.00| 74.95%|d 0.00| 0.05%|f 0.00| 0.01%|
| 39.88%| 0.6315* H 3 s| 99.94%|p 0.00| 0.06%|
3. |1.99934| BD | 1| C 1 - H 4
| 60.12%| 0.7754* C 1 s| 24.99%|p 3.00| 74.95%|d 0.00| 0.05%|f 0.00| 0.01%|
| 39.88%| 0.6315* H 4 s| 99.94%|p 0.00| 0.06%|
4. |1.99934| BD | 1| C 1 - H 5
| 60.12%| 0.7754* C 1 s| 24.99%|p 3.00| 74.95%|d 0.00| 0.05%|f 0.00| 0.01%|
| 39.88%| 0.6315* H 5 s| 99.94%|p 0.00| 0.06%|
メモ:sed
f
キャプチャグループで検索を正規表現に置き換えてキャプチャされた\n([a-z])
文字を再挿入すると、デフォルトでは\1
コメント内の@steeldriverの応答と同じです。
もっと読みawk
やすいと思います。
答え3
フロント:
printf '%s\n' g/^f/-1j wq | ex file
これは、グローバルコマンドを使用して、oinで始まるすべての行でoinを実行しますg
。 Joinは単なる接続線です。-1j
f
答え4
$ awk '{printf "%s%s", (/^f/ ? "" : s), $0; s=ORS} END{print ""}' file
1. |1.99934| BD | 1| C 1 - H 2
| 60.12%| 0.7754* C 1 s| 24.99%|p 3.00| 74.95%|d 0.00| 0.05%|f 0.00| 0.01%|
| 39.88%| 0.6315* H 2 s| 99.94%|p 0.00| 0.06%|
2. |1.99934| BD | 1| C 1 - H 3
| 60.12%| 0.7754* C 1 s| 24.99%|p 3.00| 74.95%|d 0.00| 0.05%|f 0.00| 0.01%|
| 39.88%| 0.6315* H 3 s| 99.94%|p 0.00| 0.06%|
3. |1.99934| BD | 1| C 1 - H 4
| 60.12%| 0.7754* C 1 s| 24.99%|p 3.00| 74.95%|d 0.00| 0.05%|f 0.00| 0.01%|
| 39.88%| 0.6315* H 4 s| 99.94%|p 0.00| 0.06%|
4. |1.99934| BD | 1| C 1 - H 5
| 60.12%| 0.7754* C 1 s| 24.99%|p 3.00| 74.95%|d 0.00| 0.05%|f 0.00| 0.01%|
| 39.88%| 0.6315* H 5 s| 99.94%|p 0.00| 0.06%|