Yar*_*miz 1 linux bash sed file lines
这里简单的问题,但我有点卡住了.
假设我有一个包含20行和4列的文件.第一列是数字(1到20).
我有一个其他文件,里面有几个数字就像这样
1
4
19
Run Code Online (Sandbox Code Playgroud)
现在,如何从第二个文件中的数字开始删除行(在第一个文件中).我的主要问题是如果我做了一个sed,数字1将得到10,11,12和其他.我怎么能以正确的方式做到这一点?
非常感谢!
编辑:例子
文件1
1 a a a
2 b b b
3 c c c
4 d d d
5 e e e
6 f f f
7 g g g
8 h h h
9 i i i
10 j j j
11 k k k
12 l l l
13 m m m
14 n n n
15 o o o
16 p p p
17 q q q
18 r r r
19 s s s
20 t t t
Run Code Online (Sandbox Code Playgroud)
文件2
1
4
19
Run Code Online (Sandbox Code Playgroud)
我想要的结果:
2 b b b
3 c c c
5 e e e
6 f f f
7 g g g
8 h h h
9 i i i
10 j j j
11 k k k
12 l l l
13 m m m
14 n n n
15 o o o
16 p p p
17 q q q
18 r r r
20 t t t
Run Code Online (Sandbox Code Playgroud)
你可以使用awk这个:
awk 'FNR==NR{a[$1]; next} !($1 in a)' file2 file1
2 b b b
3 c c c
5 e e e
6 f f f
7 g g g
8 h h h
9 i i i
10 j j j
11 k k k
12 l l l
13 m m m
14 n n n
15 o o o
16 p p p
17 q q q
18 r r r
20 t t t
Run Code Online (Sandbox Code Playgroud)
分解awk命令:
FNR == NR { # While processing the file2
a[$1] # store the 1st field in an array
next # move to next record
}
# while processing the file1
!($1 in a) # print a row from file1 if 1st field is not in array 'a'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |