x個以下の数字を含む行のみを維持してください。 TXTファイル

x個以下の数字を含む行のみを維持してください。 TXTファイル

同様の質問を見つけました。

ところで、この場合、私が確認したいのは、全長ではなく、行の桁数です。たとえば、次の入力から:

cdc85e24-b9e9-8802-080a-b84479e1ae82  
ekodeveloper0  
1795475824.1129747.1472396049615.ref  
1795475824.1129747.1472396049615  
967175540.1194446.1472407271491  
wangxiuyan552  
jveazey  
xoloki  
whelee  
matthauck  
patel3.anirudh  
mischa.salle  

N桁以上の行をすべて削除する方法は?

答え1

質問にタグ付けしたので、Perlでこれを行う1つの方法は、Perlが置き換えられた文字数を返すという事実をperl利用することです。たとえば、(taken)これを行うことができます。trN = 13

perl -ne 'print unless tr/[0-9]/[0-9]/ > 13' file
ekodeveloper0
wangxiuyan552
jveazey
xoloki
whelee
matthauck
patel3.anirudh
mischa.salle

おそらくより伝統的なアプローチは、スカラーコンテキストで正規表現マッチングを評価することによって数を得ることです。

perl -ne '$c = () = /\d/g; print unless $c > 13' file

例を見る文字列内の一致するアイテムの数を計算するためのPerlのショートカットはありますか?

答え2

Xまたはもっと数字。以下はXが13の例です。

sed -n 's/[0-9]/&/13p' input.txt > output.txt

ただし、逆に変更して実行できます。次の内容を含む行のみを保持するコマンドは次のとおりです。13未満数字:

sed -n -e 's/[0-9]/&/13;t' -e 'p' input.txt > output.txt

説明 - 13を超える数字を含む行のみを印刷します。

sed -n 's/[0-9]/&/13p' input.txt > output.txt

代替テキストの記号は、&「一致するすべてのコンテンツ」を意味します。

コマンドの数値フラグs(その/find/replace/部分の後ろ)は、検索パターンの対応するインスタンスのみを置き換えることを意味します。

pコマンドのフラグは、s「代替が行われた場合に印刷」を意味します。

-nもちろん、このスイッチはSedの基本的な「印刷」操作を抑制するためのものです。

説明 - 数字が 13 未満の行だけを印刷します。

sed -n -e 's/[0-9]/&/13;t' -e 'p' input.txt > output.txt

スイッチ-eは「実行」です。ただコマンドを渡すだけです。私たちは複数の問題を経験しているので、ここで必要です。

最後のコマンドが置換を実行した場合、このtコマンドは残りのコマンドをスキップします。s

コマンドp印刷。

関連情報