如何基于2个或多个列值拆分文件

时间:2019-06-20 23:44:04

标签: linux shell

我正在尝试基于2列值拆分文件。

能够根据一列拆分文件

awk -F\| '{print>$1}' file1

数据需要根据第2列和第5列进行拆分(如果column2 = 3 AND column5 = M)

A1|3|100|20|M 
A1|5|101|20|N 
A1|5|101|30|M 
A1|3|105|20|O
B1|3|150|5|M
A1|3|106|20|Q
A1|5|101|20|N
A1|5|101|30|Q
A1|5108|20|O
B1|3|150|5|M


Output : File 1

A1|5|101|20|N
A1|5|101|30|M
A1|3|105|20|O
A1|3|106|20|Q
A1|5|101|20|N
A1|5|101|30|Q
A1|5108|20|O

Output: File 2

A1|3|100|20|M
B1|3|150|5|M
B1|3|150|5|M

1 个答案:

答案 0 :(得分:0)

cat file1 
A1|3|100|20|M 
A1|5|101|20|N 
A1|5|101|30|M 
A1|3|105|20|O
B1|3|150|5|M
A1|3|106|20|Q
A1|5|101|20|N
A1|5|101|30|Q
A1|5108|20|O
B1|3|150|5|M

尝试一下:

awk -F\| '{print>$2$5}' file1

哪个给我:

ls -l
total 120
-rw-rw-r-- 1 tink tink  26 Jun 21 12:22 3M
-rw-rw-r-- 1 tink tink  15 Jun 21 12:22 3M 
-rw-rw-r-- 1 tink tink  14 Jun 21 12:22 3O
-rw-rw-r-- 1 tink tink  14 Jun 21 12:22 3Q
-rw-rw-r-- 1 tink tink  13 Jun 21 12:22 5108
-rw-rw-r-- 1 tink tink  15 Jun 21 12:22 5M 
-rw-rw-r-- 1 tink tink  14 Jun 21 12:22 5N
-rw-rw-r-- 1 tink tink  15 Jun 21 12:22 5N 
-rw-rw-r-- 1 tink tink  14 Jun 21 12:22 5Q
-rw-rw-r-- 1 tink tink 140 Jun 21 12:16 file1