Bash 遍历文件末尾
Bash Loop Through End of File
我正在编写脚本,该脚本将从一个关键字和单独文件中的其他关键字列表中找到一个模式。
File1 有列表,每行一个单词。 File2 有另一个列表——我真正想搜索的列表。
while read LINE; do
grep -q $LINE file2
if [ $? -eq 0 ]; then
echo "Found $LINE in file2."
grep $LINE file2 | grep example
if [ $? -eq 0 ]; then
echo "Keeping $LINE"
else
echo "Deleting $LINE"
sed -i "/$LINE/d" file2
fi
else
echo "Did not find $LINE in file2."
fi
done < file1
我想要的是从 file1 中取出每个单词并在 file2 中搜索它的每个实例。从这些实例中,我想搜索包含单词 example 的所有实例。任何不包含示例的实例,我想删除它们。
我的代码,它从 file1 中获取一个单词并在 file2 中搜索它的一个实例。一旦它找到那个实例,循环就会移动到 file1 中的下一个单词,此时它应该继续在 file2 中搜索前一个单词;它应该只在完成对当前单词的文件 2 搜索后移动到下一个文件 1 单词。
关于如何实现这个的任何帮助?
建议 awk
脚本,每个文件只扫描一次。
awk 'FRN == RN {wordsArr[++wordsCount] = [=10=]} # read file1 lines into array
FRN != RN && /example/ { # read file2 line matching regExp /example/
for (i in wordsArr) { # scan all words in array
if ([=10=] ~ wordsArr[i]) { # if a word matched in current line
print; # print the current line
next; # skip rest of words,read next line
}
}
}' file1 file2
我正在编写脚本,该脚本将从一个关键字和单独文件中的其他关键字列表中找到一个模式。
File1 有列表,每行一个单词。 File2 有另一个列表——我真正想搜索的列表。
while read LINE; do
grep -q $LINE file2
if [ $? -eq 0 ]; then
echo "Found $LINE in file2."
grep $LINE file2 | grep example
if [ $? -eq 0 ]; then
echo "Keeping $LINE"
else
echo "Deleting $LINE"
sed -i "/$LINE/d" file2
fi
else
echo "Did not find $LINE in file2."
fi
done < file1
我想要的是从 file1 中取出每个单词并在 file2 中搜索它的每个实例。从这些实例中,我想搜索包含单词 example 的所有实例。任何不包含示例的实例,我想删除它们。
我的代码,它从 file1 中获取一个单词并在 file2 中搜索它的一个实例。一旦它找到那个实例,循环就会移动到 file1 中的下一个单词,此时它应该继续在 file2 中搜索前一个单词;它应该只在完成对当前单词的文件 2 搜索后移动到下一个文件 1 单词。
关于如何实现这个的任何帮助?
建议 awk
脚本,每个文件只扫描一次。
awk 'FRN == RN {wordsArr[++wordsCount] = [=10=]} # read file1 lines into array
FRN != RN && /example/ { # read file2 line matching regExp /example/
for (i in wordsArr) { # scan all words in array
if ([=10=] ~ wordsArr[i]) { # if a word matched in current line
print; # print the current line
next; # skip rest of words,read next line
}
}
}' file1 file2