假设文本文件分别包含以foo
和bar
开头的行。进一步假设我只打印以bar
开头的那些第四行;应始终打印以foo
开头的行。
foo bar qux
# Deliberate empty line
bar baz 1
bar baz 2
bar baz 3
bar baz 4
bar baz 5
bar baz 6
bar baz 7
bar baz 8
# A miscellaneous code comment
以下代码打印每四行而不管第一个单词,因此不是我要找的。 p>
awk '/^bar/ NR == 1 || NR % 4 == 0' infile
正确的代码是什么(优先使用awk
)?
修改
感谢 fedorqui 提出的出色建议。考虑到输入文件中可能出现空行和注释,我使用以下代码:
user$ awk '!/^bar/ || (/^bar/ && !(++c%4))' file
foo bar qux
# Deliberate empty line
bar baz 4
bar baz 8
# A miscellaneous code comment
答案 0 :(得分:4)
只需使用计数器:
json report
这将打印完成以下任何一项的行:
看到它的实际效果:
var dealerSource = new ol.source.Vector();
function dealerStyle(feature) {
var style = new ol.style.Style({
image: new ol.style.Circle({
radius: 6,
stroke: new ol.style.Stroke({
color: 'white',
width: 2
}),
anchor: [1.5, 1.5],
fill: new ol.style.Fill({
color: 'green'
})
})
});
return [style];
}
答案 1 :(得分:-3)
这应该可以解决问题:
awk '/^bar/ && NR % 4 == 0 || /^foo/' infile