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是否在每一行都独立运行? –