1
我試圖提取從/ etc/OS釋放其中包含操作系統名稱:如何從文件中有多條線路提取子
...
NAME="Os Name"
...
但是,當我執行:
sed 's/.*NAME="\([^"]*\).*/\1/' /etc/os-release
它正確地捕獲Os名稱,但它會打印所有其他打印僅捕獲字符串的行,爲什麼?
內容OS-release文件的
cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
sed命令應該只輸出 「的CentOS Linux的」,但它輸出的所有行:
$ sed 's/.*NAME="\([^"]*\).*/\1/' /etc/os-release
CentOS Linux
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
CentOS Linux 7 (Core)
ANSI_COLOR="0;31"
cpe:/o:centos:centos:7
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
thansk,但爲什麼我的命令不起作用? –
因爲您沒有使用'sed'的'-n'選項來抑制正常輸出。 – anubhava
但是這裏[http://www.grymoire.com/Unix/Sed.html]說'默認情況下,sed打印每一行。如果它進行替換,新文本將被打印而不是舊文件',所以它應該只打印保存在\ 1中的字符串,否? sed是否在每一行都獨立運行? –