Linux

在此命令中替換 awk

  • April 14, 2021

我正在為 Debian 的 preseed-script 苦苦掙扎,並發現 awk 在安裝過程中不可用。

一點上下文

preseed-script 在以下行失敗並返回空結果:

real=`ip -o link | awk '/<%= @host.mac -%>/ {print $2;}' | sed s/://`
cat << EOF > /etc/network/interfaces
#loopback
auto lo
iface lo inet loopback

#<%= @host.primary_interface.identifier %>
auto $real
allow-hotplug $real
iface $real inet <%= host_dhcp ? 'dhcp' : 'static' %>

結果,$real為空並產生錯誤的網路配置。

我希望歸檔的內容

我想重寫命令,使結果看起來像ens18eth0基於此輸入:

root@vm:~# ip -o link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000\    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000\    link/ether 1e:7d:da:55:31:23 brd ff:ff:ff:ff:ff:ff

這是安裝過程中失敗的命令:

root@vm:~# ip -o link | awk '/1e:7d:da:55:31:23/ {print $2;}' | sed s/://
ens18

我的問題

在這種情況下,如何避免awk並使用其他工具來ens18ip -o link-output 獲取介面名稱?不幸的是,我對sed.

嘗試grepcut

ip -o link | grep '1e:7d:da:55:31:23' | cut -d' ' -f2 | sed s/://

引用自:https://unix.stackexchange.com/questions/645009