我有一个 tsv 单词文件,我想编写一个 bash 来计算文件中有多少个四重奏,并将文件名和四重奏数量导出到 csv 文件。
例如,对于文件 fileName.tsv: I,have,this,word,cat,home,dog,day
结果将是一个带有 fileName.tsv,2 的 csv 文件。
答案1
像这样的东西
$ echo "I,have,this,word,cat,home,dog,day"|gawk -F, '{printf("%d\n", NF/4)}'
2
答案2
要获得四重奏的数量,您可以计算单词的数量,使用整数除法除以四。
首先,我会用withsed 's/,/ /g'
来替换,以便可以轻松解析单词数。然后我将其输入以计算单词数。最后我用 来执行整数除法。看起来像这样:,
wc -w
bash
$(( x / 4 ))
$ cat fileName.tsv
I,have,this,word,cat,home,dog,day
$ sed 's/,/ /g' fileName.tsv
I have this word cat home dog day
$ sed 's/,/ /g' fileName.tsv | wc -w
8
$ echo $(( $(sed 's/,/ /g' fileName.tsv | wc -w) / 4 ))
2
您提到使用 <filename,quartet> 制作 csv 文件。我假设您需要不止一行,这样您就可以在 bash 中使用循环来解析与模式匹配的每个文件。
for filename in *.tsv; do
quartet=$(( $(sed 's/,/ /g' $filename | wc -w) / 4 ))
echo $filename,$quartet >> output.csv
done