我尝试过这个,但是它显示的是行数计数。
declare -i x=0 while IFS="" read -r p || [ -n "$p" ] do x=x+1 done <test.txt echo "$x
由于我是初学者,如果有人可以解释一下,我将不胜感激
答案 0 :(得分:2)
假设您的单词由制表符,广告换行符和以下代码段分隔:
echo $'word1 word2! word3
\tword4\t\t\t\t\t\tword5\tword6
word7 word8
word9 word10' | \
while IFS=$'\t ' read -ra linewords; do
for i in "${linewords[@]}"; do
echo word is "'$i'"
done
done
将输出:
word is 'word1'
word is 'word2!'
word is 'word3'
word is 'word4'
word is 'word5'
word is 'word6'
word is 'word7'
word is 'word8'
word is 'word9'
word is 'word10'
它使用多个IFS值并结合read
读入数组,有关如何在定界符上分割字符串的信息,请参见this answer。
答案 1 :(得分:1)
我会为此使用awk:
TEST4TEST4TEST4TEST4
输出:
$ echo "Lorem ipsum dolor sit amet,
consectetur adipisci elit,
..." |
awk '{
for(i=1;i<=NF;i++)
print "iterating " $i
}'
答案 2 :(得分:0)
grep -oE '\w+' YOUR_FILE.txt
将YOUR_FILE.txt中的单词写到标准输出。将其输入到循环中,然后在单词上进行迭代。
这假设您的情况下的“单词”是由\w
描述的一个或多个字符,即下划线或您当前的语言环境定义为字母数字字符。如果您对“单词”的看法不同,那么您当然可以根据需要定制正则表达式。