如何删除文件中某些数字开头的行?

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)

anu*_*ava 6

你可以使用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)