我希望在bash shell脚本中将两个文件的名称作为命令行参数,然后在第一个文件中为每个单词(单词以逗号分隔并且文件有多行),我需要计算它在第二个档案。 我写了一个像这样的shell脚本
if [ $# -ne 2 ]
then
echo "invalid number of arguments"
else
i=1
a=$1
b=$2
fp=*$b
while[ fgetc ( fp ) -ne EOF ]
do
d=$( cut -d',' -f$i $a )
echo "$d"
grep -c -o $d $b
i=$(( $i + 1 ))
done
fi
例如file1有单词abc,def,ghi,jkl(在第一行) mno,pqr(第二行)
和file2有单词abc,abc,def
现在输出应该像abc 2 def 1 ghi 0
答案 0 :(得分:2)
要用逗号分隔的单词逐字阅读,请使用以下代码段:
while read -r p; do
IFS=, && for w in $p; do
printf "%s: " "$w"
tr , '\n' < file2 | grep -Fc "$w"
done
done < file1
答案 1 :(得分:0)
另一种方法:
words=( `tr ',' ' ' < file1`) #split the file1 into words...
for word in "${words[@]}"; do #iterate in the words
printf "%s : " "$word"
awk 'END{print FNR-1}' RS="$word" file2
# split file2 with 'word' as record separator.
# print number of lines == number of occurrences of the word..
done