次のテキストファイルの例があります。
AFUA_2G08360|pyrG
AFUA_2G12630
gel1|bgt2|AFUA_2G01170
そして、UNIXコマンドラインで使用してAFUA_2G08360
、を除外するために正規表現を実行したいと思います。
どのようにそれを提案しますか?AFUA_2G12630
AFUA_2G01170
perl -l -ne
「sed」を次のようなもので使用しないのはなぜですか
sed 's/AFUA_2G\d{5}//'
次の表現を試してください。
/(AFUA_2G\d+)/g
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
使用する
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
入力例の実行可能なワンライナーを次に示します。
cat data | perl -l -e 'while (<>) {s/.*(AFUA_[^\|]*).*/\1/g; print}'