2016-09-19 31 views
0

9番目の列には複数の値が ";"で区切られています。私は、タブの制限されたファイルの列$ 9の "name_id"の後に最初に出現する文字列を見つけようとしています。ファイルの最初の行は、このように見えます。部分文字列に一致する最初の値を見つける

1 NY state 3102016 3102125 . + . name_id "ENSMUSG8868"; trans_id "ENSMUST00000082908"; number "1"; id_name "Gm26206";ex_id "ENSMUSE000005"; 

";"で区切られた複数の値があります。第9欄にある。私は、最後の「ENSMUSE000005」

sed 's|.*"\([0-9_A-Z]\+\)".*|\1|' input.txt | head 

は、それがawkでの正規表現で行うことができますIDを引き出し、このコマンドを考え出すだろうか?どうもありがとう!

+0

'あなたの所望の出力をENSMUSG8868'されますか? –

+0

はいそうです。ありがとう! – AnkP

答えて

2
echo $x |awk -F';' '{split($1,a," ");gsub(/"/ ,"" ,a[10]);print a[10]}' 
ENSMUSG8868 

ここで、xは自分の行です。 OPのコメントに基づいて

echo $x |awk -F';' '{split($1,a," ");gsub(/"/ ,"" ,a[10]);print a[1],a[10]}' 
1 ENSMUSG8868 
+0

これは完璧に動作します!ありがとう。これと一緒に最初の列を出力するためにとにかくありますか?今は別のawkコマンドを実行して2つのステップで実行しています。これらの可能な2つの異なる区切り文字を組み合わせます。 – AnkP

+0

第1列を含むあなたの予想される出力は? –

+0

'1 ENSMUSG8868' – AnkP

関連する問題