假设我们有两个文件:a.txt和b.txt。每个文件都有多行文字。
如何编写shell脚本来检查b.txt中是否存在a.txt的所有内容?
对于提示人来说,我没有注意到-q如果成功匹配将输出0。
我最终得到了:
如果grep a.txt -q -f b.txt
;然后
否则
网络连接
答案 0 :(得分:5)
尝试grep
cat b.txt|grep -f a.txt
答案 1 :(得分:1)
这是一个脚本,可以执行您所描述的内容:
运行:sh SCRIPT.sh a.txt b.txt
# USAGE: sh SCRIPT.sh TEST_FILE CHECK_FILE
TEST_FILE=$1
CHECK_FILE=$2
## for each line in TEST_FILE
while read line ; do
## check if line exist in CHECK_FILE; then assign result to variable
X=$(grep "^${line}$" ${CHECK_FILE})
## if variable is blank (meaning TEST_FILE line not found in CHECK_FILE)
## print 'false' and exit
if [[ -z $X ]] ; then
echo "false"
exit
fi
done < ${TEST_FILE}
## if script does not exit after going through each line in TEST_FILE,
## then script will print true
echo "true"
假设:
答案 2 :(得分:0)
使用grep
grep -f a.txt b.txt
答案 3 :(得分:0)
你需要编写一个迭代a.txt中每一行的循环,并使用grep(或其他方法)查看该行是否在b.txt中。如果您在b.txt中找到任何不的实例,那么您可以提供答案:并非所有行都匹配。如果您没有找到此类实例,则可以断定所有行都匹配。
使用反引号捕获grep的输出可能很有用:
if [`grep -v $line b.txt`== ""]; then
有点儿。
如果您对如何迭代文件内容有具体问题,您应该询问一个特定问题,显示您尝试过的内容。