d******i 发帖数: 7160 | 1 比如下面这段统计词频的bash:
awk '
{for(i=1;i<=NF;i++) D[$i]++}
END {for(i in D) print i,D[i]}
' words.txt
前面的D[$i]必须加$,后面的必须没有$
为啥会有这不同呢? |
j********2 发帖数: 4438 | 2 不带dollar sign的时候表明你在对variable进行操作,带的时候会把variable里面的
value拿出来操作。
类似java里面的pass-by-reference和pass-by-value的区别 |
d******i 发帖数: 7160 | 3 说反了吧?
我的例子里:
{for(i=1;i<=NF;i++) D[$i]++}
END {for(i in D) print i,D[i]}
第一行带'$'的'i'就是个整数,又不是指针,
谈何‘把variable里面的value拿出来操作’?
【在 j********2 的大作中提到】 : 不带dollar sign的时候表明你在对variable进行操作,带的时候会把variable里面的 : value拿出来操作。 : 类似java里面的pass-by-reference和pass-by-value的区别
|
A*****a 发帖数: 52743 | 4 $i是for()需要的,去掉$无法得到D
面的
【在 d******i 的大作中提到】 : 说反了吧? : 我的例子里: : {for(i=1;i<=NF;i++) D[$i]++} : END {for(i in D) print i,D[i]} : 第一行带'$'的'i'就是个整数,又不是指针, : 谈何‘把variable里面的value拿出来操作’?
|
d******i 发帖数: 7160 | 5 俺贴的bash是lc上的demo,
本人也运行过了。
不会有错的。
【在 A*****a 的大作中提到】 : $i是for()需要的,去掉$无法得到D : : 面的
|
k****e 发帖数: 2758 | 6 it's awk, nothing to do with bash
【在 d******i 的大作中提到】 : 比如下面这段统计词频的bash: : awk ' : {for(i=1;i<=NF;i++) D[$i]++} : END {for(i in D) print i,D[i]} : ' words.txt : 前面的D[$i]必须加$,后面的必须没有$ : 为啥会有这不同呢?
|
d******i 发帖数: 7160 | 7 谢谢。
op已改。
【在 k****e 的大作中提到】 : it's awk, nothing to do with bash
|
A*****a 发帖数: 52743 | 8 你不是说前面必须$,后面必须无$么? 既然都能得到结果,为什么"必须"?
【在 d******i 的大作中提到】 : 俺贴的bash是lc上的demo, : 本人也运行过了。 : 不会有错的。
|
k****e 发帖数: 2758 | 9 normal awk variable does not use $. $ is used for positional variable.
example: when i is 2, $i is the 2nd word.
【在 d******i 的大作中提到】 : 比如下面这段统计词频的bash: : awk ' : {for(i=1;i<=NF;i++) D[$i]++} : END {for(i in D) print i,D[i]} : ' words.txt : 前面的D[$i]必须加$,后面的必须没有$ : 为啥会有这不同呢?
|
d******i 发帖数: 7160 | 10 the syntax is really weird.
so in sentence "{for(i=1;i<=NF;i++) D[$i]++;}"
the reason to use '$' is to convert an (integer index) variable to the i-th
element it refers to?
【在 k****e 的大作中提到】 : normal awk variable does not use $. $ is used for positional variable. : example: when i is 2, $i is the 2nd word.
|
A*****a 发帖数: 52743 | 11 这里的i实际是频率次数,D是一个array,index是词,i是词对应的频率
th
【在 d******i 的大作中提到】 : the syntax is really weird. : so in sentence "{for(i=1;i<=NF;i++) D[$i]++;}" : the reason to use '$' is to convert an (integer index) variable to the i-th : element it refers to?
|
y*j 发帖数: 3139 | 12 D 实际上是一个map, $i 是一行的第i个单词
$i约等于python的
line.split()[i]
【在 A*****a 的大作中提到】 : 这里的i实际是频率次数,D是一个array,index是词,i是词对应的频率 : : th
|