回答:
grep -E
拡張正規表現構文にアクセスするために使用できます(egrepと同じ)
以下の内容のテストファイルを作成しました:
>cat testfile
this is some text
with some random lines
again some text
ok now going for numbers (:32)
ok now going for numbers (:12)
ok now going for numbers (:132)
ok now going for numbers (:1324)
今、あなたが使用できるテキストから数字だけをグレップする
>grep -Eo '[0-9]{1,4}' testfile
32
12
132
1324
出力されます。
ここで、「-o」は、行の内容全体ではなく、一致する行のセグメントのみを出力するために使用されます。
波線の括弧({や}など)は、一致したインスタンスの数を示します。{1,4}では、前の文字または文字クラスが少なくとも1回出現する必要がありますが、4回以内でなければなりません。
お役に立てれば
grep -Eo '[0-9]{1,}' testfile
POSIX標準の[:digit:]
セクション9.3.5で指定されたREブラケット式を、フラグと組み合わせて使用して、一致する「単語」のみを印刷できます。-o
$ grep -o '[[:digit:]]*' <<< $'No number in this line\nbut 123 here'
123
curlを使用してローカルまたはリモートでファイルにアクセスし、数字でラップされた行(:)をgrepし、それらの断片を切り取ってファイルに書き込みます
受け入れられた答えは、ファイルの前の行に数字がある可能性があることを無視しますが、サンプルデータでは機能しますが、ファイルがリモートの場合はどうなりますか?
地元
curl file:///home/$USER/Public/input.txt | grep -o '(:.*)' | cut -d ":" -f 2 | cut -d ")" -f 1 > output.txt
この例output.txt
では、現在のフォルダーが上書きさinput.txt
れ、パブリックフォルダーからアクセスします。
リモート
curl https://yoursite.com/Public/input.txt | grep -o '(:.*)' | cut -d ":" -f 2 | cut -d ")" -f 1 > output.txt
この例output.txt
では、現在のフォルダーが上書きされ、input.txt
からアクセスしていhttps://yoursite.com/Public/
ます。
curl
単純な場合に使用するのはなぜcat
ですか?
man grep