1

次のテキストファイルの例があります。

AFUA_2G08360|pyrG
AFUA_2G12630
gel1|bgt2|AFUA_2G01170

そして、UNIXコマンドラインで使用してAFUA_2G08360、を除外するために正規表現を実行したいと思います。 どのようにそれを提案しますか?AFUA_2G12630AFUA_2G01170perl -l -ne

4

5 に答える 5

1

「sed」を次のようなもので使用しないのはなぜですか

sed 's/AFUA_2G\d{5}//'

于 2012-09-24T09:18:13.713 に答える
0

次の表現を試してください。

/(AFUA_2G\d+)/g
于 2012-09-24T09:21:49.450 に答える
0
AFUA_[0-9A-Za-z]{7} 

ここを参照してください:http://regexr.com?328gj

コマンドライン :

user@mch:/tmp$ cat input.txt 
AFUA_2G08360|pyrG
AFUA_2G12630
gel1|bgt2|AFUA_2G01170

user@mch:/tmp$ cat input.txt | perl -lne "@matches = /AFUA_[0-9A-Za-z]{7}/g; print join("\n", @matches)";
AFUA_2G08360
AFUA_2G12630
AFUA_2G01170
于 2012-09-24T09:17:13.127 に答える
0

使用する

perl -pe 's/.*(AFUA_[0-9a-zA-Z]*).*$/\1/' your_file

テスト済み:

> cat temp
    AFUA_2G08360|pyrG
    AFUA_2G12630
    gel1|bgt2|AFUA_2G01170
> perl -pe 's/.*(AFUA_[0-9a-zA-Z]*).*$/\1/' temp
AFUA_2G08360
AFUA_2G12630
AFUA_2G01170
于 2012-09-24T10:09:48.230 に答える
0

入力例の実行可能なワンライナーを次に示します。

cat data | perl -l -e 'while (<>) {s/.*(AFUA_[^\|]*).*/\1/g; print}'
于 2012-09-24T09:31:01.823 に答える