很好,(希望)很容易。我试图找出如何从包含像
这样的字符串的文本文件(css文件)中获取变量#XXX
hr { margin: 18px 0 17px; border-color: #ccc; }
h1 a:hover, h2 a:hover, h3 a:hover { color: #001100; }
我希望将其作为
返回
ccc
001100
然后计划通过sort和uniq抛出这个,最后得到页面的定义colourscheme。
基本上,我无法弄清楚如何从匹配/color:#... [...。] /到打印出通配符部分。
答案 0 :(得分:1)
sed -n '/color/ s/.*color: *#\([^;]\+\);.*/\1/p' css_file
您可以添加一些可选的空格:
sed -n '/color/ s/.*color:[[:space:]]*#[[:space:]]*\([[:xdigit:]]\+\)[[:space:]]*;.*/\1/p'
答案 1 :(得分:1)
{
RS = "[^ ]*color[ \t\r\n\f]*:[ \t\r\n\f]*" ;
if (NR > 1) {
match($0, "#[0-9A-Fa-f]+|rgb.*\)|[a-zA-Z]+") ;
if (RSTART != 0)
str = substr($0, RSTART, RLENGTH) ;
gsub("[ \t\r\n\f]", "", str) ;
print str ;
}
}
尝试创建防弹且强大的AWK代码。不是单行,但即使在一些严重混乱的输入中也可以存活。
测试输入:
hr { margin: 18px 0 17px; border-color:
#ccc; }
h1 a:hover, h2 a:hover, h3 a:hover { color: rgb ( 123,
123, 123) }
h1 a:hover, h2 a:hover, h3 a:hover { color: red }
h1 a:hover, h2 a:hover, h3 a:hover { color: #001100; }
输出:
#ccc
rgb(123,123,123)
red
#001100
答案 2 :(得分:0)
这是awk的两种可能(也更容易阅读)方式
awk -F"#" '/color/{sub(";.*","",$NF);print $NF}' file
awk -vFS="#|; *}" '/color/{print $2}' file