我有两个文件,想要从第一个文件中的列表中获取第二个文件中的字符串。目前我可以通过grep -Fwf first.txt second.txt
获取它,但字数不等于第一个文件。
first.txt
test
test1
..........
..........
.........
second.txt
test:x:16000:16000:Test,Test Travel,423432423423/testaddress,Opened on apr.10.14:/testdisk/home/test:/bin/nologin
test1:x:16378:55:Test1,Test1 Travel,442342342342/testaddress1,opened on Apr.14.10 :/testdisk/home/test1:/bin/nologin
...................
...................
..................
答案 0 :(得分:1)
这似乎是/etc/passwd
的一部分,您希望在第一个文本块中获得这些用户。
我猜你遇到的问题是你想要获取与第一个:
完全匹配的所有名称。
为此,您可以使用:
awk -F":" 'FNR==NR {user[$1]; next} $1 in user' f1 f2
这会将file1
中的所有用户名存储在数组user[]
中。然后,它会检查哪些内容出现在file2
的第一列。
让我们创建一些虚拟数据:
$ cat f1
test
test2
tes
$ cat f2
test:x:16000:16000:Test,Test Travel,423432423423/testaddress,Opened on apr.10.14:/testdisk/home/test:/bin/nologin
test1:x:16378:55:Test1,Test1 Travel,442342342342/testaddress1,opened on Apr.14.10 :/testdisk1/home/test1:/bin/nologin
运行脚本:
$ awk -F":" 'FNR==NR {a[$1]; next} $1 in a' f1 f2
test:x:16000:16000:Test,Test Travel,423432423423/testaddress,Opened on apr.10.14:/testdisk/home/test:/bin/nologin