Bash Shell-在特殊字符之间打印文本
如何仅显示名为file.pp的文件中/var/www/html/index.html的输出,如下所示:Bash Shell-在特殊字符之间打印文本,bash,shell,awk,sh,Bash,Shell,Awk,Sh,如何仅显示名为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 $
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 $2}'
我只希望它用sed显示/var/www/html/index.html
sed -n "s/^file.*'\(.*\)'.*$/\1/ p" file
在命令体周围使用双引号,这很方便,因为我们在文本中查找单引号。将要提取的部分括在括号中,该部分正好位于单引号之间。在替换零件中,我们将此零件称为\1
,这是我们与()
匹配的第一个也是唯一一个图案,我们仅打印此图案-n
表示不打印行,最后的p
表示只打印匹配和替换的行
或者使用awk(正如@markp fuso所建议的那样),在匹配行首时,使用引号作为分隔符并打印第二个字段:
awk -F"'" '/^file/{print $2}' file
与塞德
sed -n "s/^file.*'\(.*\)'.*$/\1/ p" file
在命令体周围使用双引号,这很方便,因为我们在文本中查找单引号。将要提取的部分括在括号中,该部分正好位于单引号之间。在替换零件中,我们将此零件称为\1
,这是我们与()
匹配的第一个也是唯一一个图案,我们仅打印此图案-n
表示不打印行,最后的p
表示只打印匹配和替换的行
或者使用awk(正如@markp fuso所建议的那样),在匹配行首时,使用引号作为分隔符并打印第二个字段:
awk -F"'" '/^file/{print $2}' file
您发布的代码段中出现了两次
file
,是否始终要检索第一行?请尝试使用cat file.pp | grep file | awk-F'{{print$2}cut-d:-f1
仅基于(简单)示例输入和OPs测试代码:awk-F''/^file/{print$2}'file.pp
=>使用单引号作为输入字段分隔符,然后对于以^file
开头的任何行,打印第二个字段;请记住,如果有多行以^file
开头,这将生成多行输出;这还假设所需字段始终与^file在同一行代码>并始终包装在一对单quotes@redInk恐怕该命令仍在显示带有单引号的输出,因为在您发布的代码段中出现了两次file
,是否始终要检索第一行?请尝试使用cat file.pp | grep file | awk-F'{''{''{print$2}“| cut-d:-f1
仅基于(简单)样本输入和OPs测试代码:awk-F”“/^file/{print$2}”'file.pp
=>使用单引号作为输入字段分隔符,然后对于以^file
开头的任何行,打印第二个字段;请记住,如果有多行以^file
开头,这将生成多行输出;这还假设所需字段始终与^file在同一行代码>并始终包装在一对单quotes@redInk恐怕该命令仍然显示在hank you@thanasisp中带有单引号的输出。您能解释一下1的作用吗?1是指第一次出现,而$是指行的结尾吗?Kev看到了吗:在第一部分中,我们在零件周围和替换处用括号括起来我们以\1
,\2
等形式访问它们。因此\1
这里指的是我们在()
中拥有的第一个也是唯一的部分,只是为了让人们知道,还有另一种方法可以通过使用实现这一点:cat file.pp | awk-F“'”NR==1{print$2}“
这叫做感谢@thanasisp。你能解释一下1是什么吗?1是指第一次出现,而$是指行的结束吗?Kev看到了:在第一部分中,我们在零件周围放上括号,在替换零件处,我们将它们作为\1
,\2
等访问。因此\1
这里只是指第一个和唯一的我们在()
中有一部分是为了让人们知道,还有另一种方法可以通过使用来实现这一点:cat file.pp | awk-F““'NR==1{print$2}”
,这就是所谓的