1

テキストファイル:

auto lo eth0 eth0.2 eth0.3
iface lo inet loopback
iface eth0 inet dhcp
iface eth0.2 inet static
      address 192.168.67.1
      network 192.168.67.0
      netmask 255.255.255.0
      broadcast 192.168.67.255
iface eth0.3 inet static
      address 192.168.68.1
      network 192.168.68.0
      netmask 255.255.255.0
      broadcast 192.168.68.255

eth0.2 や eth0.3 ではなく、eth0 の単語のみを抽出します。 Desired:eth0 の単語、その行番号

4

6 に答える 6

2

お使いのgrepバージョンが-Pフラグをサポートしている場合:

grep -noP "(?<=^| )eth0(?=$| )" file.txt

結果:

1:eth0
3:eth0
于 2012-10-31T06:13:49.387 に答える
1
$ awk -v iface="eth0" '$0 ~ "(^| )"iface"( |$)" { print NR, iface }' file
1 eth0
3 eth0
于 2012-10-31T14:17:02.150 に答える
1

Extarct only eth0 word only not eth0.2 or eth0.3 Desired:eth0 word,its line number

Do it with grep:

grep -on 'iface eth0 ' file

Output:

3:iface eth0 

Append | sed 's/iface //' to remove iface.

于 2012-10-31T08:49:37.980 に答える
1

op は、次のような非エイリアス、非ルックバック インターフェイスに一致させたかったのだと思います。

awk '$1 == "iface" && $2 ~ /eth[0-9]+$/ { print $2}'

あるいは:

awk -vFS='[ .]' '$1 == "iface" && $2 ~ /^eth/ { print $2; exit}'
于 2012-10-31T06:44:13.387 に答える
1

あなたの要件を正しく理解していれば:

awk 'NR>1 && / eth0 /{print "eth0", NR}' file
于 2012-10-31T06:10:00.330 に答える
1
$> ... | grep -P "eth0[^\.]" 
auto lo eth0 eth0.2 eth0.3
iface eth0 inet dhcp

ところで、「eth0 ワードのみを抽出する」とはどういう意味ですか? -oフラグがあります。たとえば、次のとおりです。

$> ... | grep -o -P "eth0[^\.]"
eth0 
eth0
于 2012-10-31T06:15:21.657 に答える