を検索して、誰もが、私はタブ区切り値を含むファイルを持っているどの分野で26個のタブ用
を助けることができ、レコードごとに26個のタブがあるはずですが、いくつかは、より多くの私は、ファイルの外にあるもののレコードをコピーする必要があり私は、ファイルを摂取できるように、行ごとに26を持っている
何か
cat infile |grep "/t"*<26 times> >outfile
などのおかげ
は
行うマット
を検索して、誰もが、私はタブ区切り値を含むファイルを持っているどの分野で26個のタブ用
を助けることができ、レコードごとに26個のタブがあるはずですが、いくつかは、より多くの私は、ファイルの外にあるもののレコードをコピーする必要があり私は、ファイルを摂取できるように、行ごとに26を持っている
何か
cat infile |grep "/t"*<26 times> >outfile
などのおかげ
は
行うマット
grepで可能かもしれませんが、awkはそのような作業のために設計されています。
awk 'BEGIN{FS="\t"}; {if (NF == 26) print $0}' infile > outfile
awkはFS = FieldSeperator、変数に建てられた多数を持っている、あなたはここで任意の値にそれを設定することができますが、「\ t」はタブ文字を表すC言語のような一定値です。 '|' (パイプ)チャーも人気があります。
BEGIN { ... code ... }
は、処理が実行される前に実行されるコードブロックです。 最後のビットは、非BEGINブロック内のコードです。すなわち、{ if (NF ... }
は、読み込まれる各行に対して実行されるアクションです。
NF =フィールド数。したがって、ファイルのフィールド数で簡単にフィルタリングできます。
NR =レコード数(of)。
はまたすなわちgrepを、両方utiltitesは、コマンドラインに渡されるすべてのファイルを読み、grep
またはawk
ため、cat file | ...
を使用する必要がないことに注意してください.... FILE1 FILE2 ... filen
私はこれが役立つことを願っています
P.S.あなたが新しいユーザーのように見えるように、あなたがそれを受け入れられたものとして覚えておいてください、そして/または役に立つ答えとして+(または - )を付けるのを助ける答えを得たら。単に
はこれを試してみてください:
grep '^\([^\t]*\t\){26}[^\t]*$'
何それがないことは、おそらく非タブのもので区切って26個のタブを持つ行を見つけることです。 のgrepのバージョンによっては、試してみる必要があるかもしれません:
はgrepの-P '^([^ \ tの] T \ ){26} [^ \ t]を $'
が取得するために完全なperl正規表現のサポート
:
awk 'NF==26' infile > outfile
タブはデフォルトのものであるとして、FSを指定する必要はありませんが、必要はawkのデフォルトのアクションとしてアクションを指定しない場合は、一致するレコードを印刷することです。
鮮やか、説明のためにありがとう – matttm123