【发布时间】:2017-06-03 17:24:40
【问题描述】:
我有一个简单的脚本,我从文件中搜索单词
words="you are hogan"
for i in $words; do
if grep -q "$i" text.txt; then
echo "word(s) are exists"
grep "$i" text.txt
else
echo "word(s) are not exists"
fi
done
它有效,我可以逐字制作 grep。我的脚本是一样的:
grep "you" text.txt
grep "are" text.txt
grep "hogan" text.txt
但是,我收到了另一个任务。我想逐字搜索和替换文字。
所以,我应该用单词创建第二个变量,我应该使用来自第一个变量$words 的单词。我怎么理解,我应该在一个循环中使用两个变量。我知道,在这种情况下我可以使用数组。
好的,让我们开始吧,我试着做 grep,就像第一个例子:
words="you are hogan"
words2="wwe wwf nukem"
for ((i=0;i<${#words[@]};++i)); do
if grep -q "${words[i]}" text.txt; then
echo "word(s) are exists"
echo "${words[i]}"
else
echo "word(s) are not exists"
fi
done
结果不好。
+ (( i=0 ))
+ (( i<1 ))
+ grep -q 'you are hogan' text.txt
+ echo 'word(s) are not exists'
word(s) are not exists
你怎么看,它试图对所有短语进行 grep,而不是对每个单词。我如何为每个单词执行 grep 命令,例如第一个示例?
【问题讨论】:
标签: arrays bash for-loop if-statement grep