分页: 1 / 1

求助:一个脚本

发表于 : 2010-11-28 15:39
reedfish
需求描述:
有两个文本文件 1.txt 2.txt
我要写一个脚本,对1.txt中的每一行,如果在2.txt中存在,则输出,否则不输出。
比如:
1.txt:
hello
ubuntu
i love u

2.txt:
hello
ubuntu
i

则只输出
hello
ubuntu


我写了一个脚本如下:

代码: 全选

#!/bin/bash
for string in `cat 1.txt`; do
    grep $string 2.txt;
done
但是由于把cat的输出赋给变量string的时候会把 i love u拆成3个字符串,这样就导致在grep的时候用 i love u三个单词来进行查找从而错误的输出了i。
请问这个脚本该怎么改才能满足需求?谢谢啦

Re: 求助:一个脚本

发表于 : 2010-11-28 16:10
trigger
你这个只需要一行脚本,不必循环
grep -xf 1.txt 2.txt

Re: 求助:一个脚本

发表于 : 2010-11-28 17:02
reedfish
非常感谢!

Re: 求助:一个脚本

发表于 : 2010-11-28 17:04
delectate
diff

Re: 求助:一个脚本

发表于 : 2010-11-28 18:38
tusooa

代码: 全选

#!/bin/bash

fileA=()
fileB=()

while read line ; do fileA+=("$line") ; done < 1.txt
while read line ; do fileB+=("$line") ; done < 2.txt

for num in `seq 0 "${#fileA[@]}"` ; do
    lineA=${fileA[num]}
    lineB=${fileB[num]}
    if [[ ${lineB/$lineA/} != ${lineB} ]] ; then
        echo "$lineB"
    fi
done