1

次のような出力があります。

 16    1VirtualMachine1         [aljkas] some_data.blah
 17       Virtual Machine 1        [jklaj] some_more_data.blah
 23    Virtu al Machin e 1      [adwv] some_more_data.blah


 12     Virtual_Machine one      [awa] some_more_data.blah
 11    VirtualMa chineone       [kladfsa] some_more_data.blah

そして、スペースと までのコンテンツだけを取得したい[

したがって、出力は次のようになります。

1VirtualMachine1
Virtual Machine 1
Virtu al Machin e 1
Virtual_Machine one
VirtualMa chineone

私の正規表現は次のようになります(しかし、私がすべきだと思っていることをしていません):

a_cmd | grep -o -E '[[:space:]]{2,}[a-zA-Z0-9\.,_()]+.+[[:space:]]{2,}'

そして、これは元の出力をすべて返すだけです。私は何を間違っていますか?

4

3 に答える 3

3

使用sed:

sed 's/[0-9 ]* \(.*\)\[.*/\1/;/^$/d' your.file
于 2013-08-27T13:44:03.430 に答える
2

このgrep行は仕事をします:

grep -oP '\d\s+\K[^[]*'

あなたの例で:

kent$  echo " 16    1VirtualMachine1         [aljkas] some_data.blah
 17    Virtual Machine 1        [jklaj] some_more_data.blah
 23    Virtu al Machin e 1      [adwv] some_more_data.blah


 12    Virtual_Machine one      [awa] some_more_data.blah
 11    VirtualMa chineone       [kladfsa] some_more_data.blah"|grep -oP '\d\s+\K[^[]*'
1VirtualMachine1         
Virtual Machine 1        
Virtu al Machin e 1      
Virtual_Machine one      
VirtualMa chineone 
于 2013-08-27T13:42:14.287 に答える