如何通过给定 Linux 中花药文件中的列来从文件中删除列?

Men*_*ang 2 bash awk

假设我有一个文件 A 包含需要删除的列号(我的输入文件 fileB 中确实有超过 500 列),

文件A:

2
5
Run Code Online (Sandbox Code Playgroud)

我想从 fileB 中删除这些列(2 和 5):

a b c d e f
g h i j k l
Run Code Online (Sandbox Code Playgroud)

在Linux中获取:

a c d f
g i j l
Run Code Online (Sandbox Code Playgroud)

我应该怎么办?我发现我可以消除使用代码打印这些列:

awk '{$2=$5="";print $0}' fileB
Run Code Online (Sandbox Code Playgroud)

但是,这种方式有两个问题,首先它并没有真正删除这些列,它只是使用空字符串来替换它们;其次,我如何通过从另一个文件读取来获取这些列号,而不是手动输入这些列号。


原始问题:假设我有一个文件 A 包含需要删除的列号,

文件A:

223
345
346
567

我想从 Linux 中的文件 B 中删除这些列(223, 345,567),我该怎么办?

Fra*_*ona 5

如果您cut--complement选择,那么您可以这样做:

cut --complement -d ' ' -f "$(echo $(<FileA))" fileB
Run Code Online (Sandbox Code Playgroud)