7

文字 'rs' で始まる文字列のすべてのインスタンスを (1 つのファイルから) grep し、完全な文字列を新しいファイルにパイプしたいと考えています。インスタンスの数を取得できましたが、それらを新しいファイルに入れる方法がわかりません:

grep -c rs < /home/Stephanie/this.txt
698572

ファイル内の行の例は次のとおりです。

1203823    forward   efjdhgv   rs124054t8 dhdfhfhs
12045345    back   efjdkkjf   rs12445368 dhdfhfhs

rs 文字列を取得して ne ファイルに移動したいだけです。誰かが配管を手伝ってくれませんか? 私は少し読みましたが、私が見つけたものは私にとって特に役に立ちませんでした. ありがとう

4

5 に答える 5

8

私は次のようなことを提案します:

egrep -o "(\s(rs\S+))" data.txt | cut -d " " -f 2 > newfile.txt

\s空白文字で始まるものを探します

(rs\S+)次に、「rs」で始まり、その後に空白以外の文字が続く文字列を検索します

結果にはまだ空白が含まれていますが、これは望ましくないため、コンテンツが新しいファイルに書き込まれる前にそれらを「切り取ります」。

于 2013-02-22T12:23:33.060 に答える
1

非常に古いですが、これに追加したかったのです。@kev grep -c '^rs' は、rs で始まるすべての行のカウントをダンプしますが、それはありません。

ほとんどの標準バイナリでこれを比較的簡単に行うには、次を使用できます。

cat text.file | awk {'print $4'} | grep '^rs'

これにより、ファイルが cat され、各行の 4 番目のフィールドが抽出され、rs で始まる行のみが抽出されます。

于 2015-07-07T21:53:29.023 に答える
1

Perl の使用:

 perl -lane 'print $1 while (/\b(rs\w+)/g)' input

またはとを使用trしてgrep

tr '[ \t]' '[\n\n]' < input | grep '^rs'

here は^行頭に一致します。

于 2013-02-22T05:58:37.513 に答える
0
perl -F -lane '$a=$_;for(@F){if(/^rs/){print $a;last}}' your_file

また

perl -lne 'print if(/[\s]rs/ || /^rs/)' your_file
于 2013-02-22T06:28:09.780 に答える
0

grep コマンドの使用:

grep -w -o "rs[0-9a-z]*"
于 2013-02-22T11:36:11.190 に答える