Shell - 在特殊字符之间打印文本
Shell - Print Texts inbetween Special Characters
如何只显示名为 file.pp 的文件中 /var/www/html/index.html 的输出,如下所示:
file {'/var/www/html/index.html':
ensure => 'file',
content => "Hello World!\n",
}
到目前为止,我只能使用命令 '/var/www/html/index.html': 来显示输出
cat file.pp | grep file | awk -F '{' '{print }'
我只想显示 /var/www/html/index.html
使用 sed
sed -n "s/^file.*'\(.*\)'.*$// p" file
在命令主体周围使用双引号,这很方便,因为我们在文本中寻找单引号。将要提取的部分括在括号中,该部分就在单引号之间。在替换部分,我们将此部分引用为 </code>,这是我们与 <code>()
匹配的第一个也是唯一一个模式,我们只打印这个。 -n
表示不打印行,最后的 p
表示只打印匹配和替换的行。
或者使用 awk(正如@markp-fuso 已经建议的那样),使用引号作为分隔符并在匹配行开头时打印第二个字段:
awk -F"'" '/^file/{print }' file
如何只显示名为 file.pp 的文件中 /var/www/html/index.html 的输出,如下所示:
file {'/var/www/html/index.html':
ensure => 'file',
content => "Hello World!\n",
}
到目前为止,我只能使用命令 '/var/www/html/index.html': 来显示输出
cat file.pp | grep file | awk -F '{' '{print }'
我只想显示 /var/www/html/index.html
使用 sed
sed -n "s/^file.*'\(.*\)'.*$// p" file
在命令主体周围使用双引号,这很方便,因为我们在文本中寻找单引号。将要提取的部分括在括号中,该部分就在单引号之间。在替换部分,我们将此部分引用为 </code>,这是我们与 <code>()
匹配的第一个也是唯一一个模式,我们只打印这个。 -n
表示不打印行,最后的 p
表示只打印匹配和替换的行。
或者使用 awk(正如@markp-fuso 已经建议的那样),使用引号作为分隔符并在匹配行开头时打印第二个字段:
awk -F"'" '/^file/{print }' file