如何计算单词出现在一行中的次数? 例如,我有“man”这个词和以下几行:
a man walks here
nobody over here
from man to man
结果应该是:第一行,一次,第二行0次,最后一次两次。
答案 0 :(得分:1)
使用awk可以轻松完成:
awk -F 'man' '{print (NF?NF-1:0)}' file
1
0
2
-F 'man'
将输入字段分隔符设置为man
,NF
打印每行的字段数。
如果您想要计算完整的单词,请使用此gnu-awk
:
awk -F '\\<man\\>' '{print (NF?NF-1:0)}' file
对于非gnu awk,你可以使用它:
awk -F '(^|[^[:alnum:]])man([^[:alnum:]]|$)' '{print (NF?NF-1:0)}' file
答案 1 :(得分:1)
如果您不想计算mankind
或其他包含man
的字符串,您可以在空格上打破并遍历每个字段:
$ awk '{c=0; for(i=1;i<=NF;i++) if ($i~/^man$/) c++; print c}' file
如果您想使用变量:
$ awk -v m=man '{c=0; for(i=1;i<=NF;i++) if ($i==m) c++; print c FS m}' file
如果你有gawk
vs POSIX awk,你可以这样做:
$ awk '{n=gsub(/\<man\>/, ""); print n}' file
答案 2 :(得分:0)
$ cat file
a man walks here
nobody over here
from man to man
$ awk -v tgt="man" '{print gsub("(^|[[:space:]])"tgt"([[:space:]]|$)","&")}' file
1
0
0
2
以上内容适用于任何awk,它只依赖于空格分隔的单词。
答案 3 :(得分:0)
如果你想看到一个亚麻布,并且跳过没有出现的线条,你可以尝试像
这样的东西find . -type f -name '*.spec' -print0 | \
while IFS= read -r -d '' dot_spec_file; do \
cat "$dot_spec_file" | \
tr -d '\15\32' | \
sponge "$dot_spec_file" \
; done
答案 4 :(得分:0)
尝试使用此版本:它启用多文件搜索,生成的输出类似于 grep -nH :
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html,
body {
width: 100%;
height: 100%;
}
.wrap {
perspective: 600px;
perspective-origin: 50% 100px;
width: 100%;
height: 100%;
overflow: hidden;
}
.cube {
position: relative;
transform-style: preserve-3d;
height: 100%;
width: 100%;
}
.cube > div {
position: absolute;
height: 100%;
width: 100%;
}
.cube > div:not(.front) {
border: 1px solid black;
background: lightgrey;
}
.back {
transform: rotateY(180deg) translateZ(400px);
//transform: translateZ(400px);
}
.left {
transform: rotateY(270deg) translateX(-400px);
transform-origin: left center;
}
.right {
transform: rotateY(-270deg) translateX(400px);
transform-origin: right top;
}
.bottom {
transform: rotateX(90deg) translateY(10px);
transform-origin: center bottom;
}
.top {
transform: rotateX(-90deg) translateY(30px);
transform-origin: left top;
}
.front {
transform: translateZ(100px);
}
.content {
padding: 15px;
width: 100%;
height: 100%;
transform: rotateY(180deg);
}
.content > div {
float: left;
}
.content > .video-wrapper {
line-height: 100%;
}
.content > .text {
width: 35%;
padding-left: 15px;
text-align: left;
}
.only-video {
width: inherit;
height: inherit;
}
.only-video iframe {
width: inherit;
height: inherit;
}
测试:
#!/usr/bin/awk -f
BEGIN {
word=ARGV[1];
ARGV[1]="";
print "Filename:Line #:" word " #:source line";
}
{
count=0;
for (i=1; i<=NF; i++) {
if ($i == word) {
count++;
}
}
print FILENAME ":" FNR ":" count ":" $0;
}