整数(行番号)とテキストを含むファイルがあります。 PDFファイルを抽出することにより、それらの行番号はテキストから別の行に入れられ、それらの行番号をすべて削除したいと思います。私は正規表現にあまり熟練していませんが、それがそれほど難しくないはずだと100%確信しています。私はvim/nvimを使用していますが、awk/sedを使用する必要がある場合は、それでも機能します。
ファイルは次のようになります。
123
124
125
Text was found in
those three lines
should stay
したがって、理想的には、次のように検索します。正の整数(1,2,3 ... 123456)で始まり、その整数のみを含むすべての行。それらは削除する必要があります。
どんな助けでも大歓迎です。
ボーナスチャレンジ:何らかの理由で、一部の行は^L1234
で始まるため、追加の特殊文字があります。ある時点で、これらも削除したいと思います。ただし、個別の手順にすることもできます。
[0-9]
は、ほとんどどこでも機能する単純なcollectionの数字です。 Vimでは、\d
(10進数)も使用できます。\+
乗数を追加します。^
と$
を介して)。:global/{pattern}/
を介して行われます。:delete
dである必要があります。まとめ:
:global/^[0-9]\+$/delete
sed
;を使用することもできます。それはより速く、非対話的に動作します。これによりすべての入力行にルールが自動的に適用されるため、:global
は必要なく、:delete
はd
にすぎません。 -i
を使用すると、置換が適切に行われます(したがって、正しく保持し、元のファイルのバックアップコピーを用意してください!)
sed -i -e '/^[0-9]\+$/d' file
オプションのプレフィックスの場合、その乗数は\?
です。その^L
が1文字の場合は、Vimに<C-V><C-L>
として入力する必要があります。
:%s/^[0-9]\+\n//gc
:%s//
-グローバル検索と置換^
-行頭から開始[0-9]
-数字を一致させる\+
- 1つ以上の欲張りマッチ\n
match newline(注:行末を確認してください。これらはシステムによって異なり、たとえば\r\n
代わりに)gc
-グローバル一致+確認(たくさんある場合、または確実な場合はc
を削除します123
124
125
Text was found in
those three lines
should stay
:%s/^[0-9]*\n//g
Text was found in
those three lines
should stay
&Lに関するterdonの回答 ごとに、^L
それは form feed character
、wihはsed
を使用して削除できます。
sed 's/\o14//g' file
その答えを読んで、他の方法を確認することは価値があります。