使用shell将文本文件的某些行移动到新文件中

时间:2016-08-09 11:41:27

标签: unix awk

我有一个制表符分隔的文本文件,如

档案1

x1 23 47 59
x2 58 23 12
x3 39 30 11
...
x21909 020

和一个简单的值列表,如

文件2

x1
x34
x56
x123
..
x9876

我想从文件2中的值开始获取文件1中的所有行,并将它们移动到文件3中,以便...

文件3

x1 23 47 69
x34 38 309 20
x56 49 201 10
x123 39 30 10
..
x9876 48 309 123

我尝试过使用grep命令但是我不知道如何使用文件2中的一长串值来完成它,以及如何使它占用整行。是否有一个简单的shell命令可以做到这一点?

3 个答案:

答案 0 :(得分:0)

使用制表符作为分隔符,这应该有效:

  在;做grep -P“^ $ i \ t”file1;完成

以空格作为分隔符,这样的东西应该有效:

  在;做grep“^ $ i”file1;完成

干杯。

答案 1 :(得分:0)

awk 'NR==FNR{a[$1]=$0;next} {print a[$1]}' file1 file2

答案 2 :(得分:0)

如果第一个字段值与其他字段不同,则grep符合帐单

grep -Ff file2 file1