猫在3个文件中的特定列

我有3个文件,例如:

file1_file:

scaffold_159    625 YP_009345712    0.284   447 289 9   96675   95377   196 625 6.963E-38   158
scaffold_159    625 YP_009345714    0.284   447 289 9   96675   95377   196 625 6.963E-38   158
IDBA_scaffold_24562 625 YP_009345713    0.464   56  20  2   2549    2686    10  65  7.513E-03   37

file2_file:

scaffold_159    625 YP_009345717    0.284   447 289 9   96675   95377   196 625 6.963E-38   158
scaffold_159    625 YP_009345718    0.284   447 289 9   96675   95377   196 625 6.963E-38   158
IDBA_scaffold_24562 625 YP_009345719    0.464   56  20  2   2549    2686    10  65  7.513E-03   37

file3_file:

scaffold_159    625 YP_009345711    0.284   447 289 9   96675   95377   196 625 6.963E-38   158
scaffold_159    625 YP_009345723    0.284   447 289 9   96675   95377   196 625 6.963E-38   158
IDBA_scaffold_24562 625 YP_009345721    0.464   56  20  2   2549    2686    10  65  7.513E-03   37

,我只想在单个new_file.txt中获得3个文件的第3部分。

在这里我应该得到:

YP_009345712
YP_009345714
YP_009345713
YP_009345717
YP_009345718
YP_009345711
YP_009345723
YP_009345721

从现在开始,我尝试:

cat file_names.txt | while read line; do cat /path1/${line}/path2/${line}_file > new_file.txt; done

file_names.txt中,我有:

file1
file2
file3

但我不知道如何仅提取第三列...

Ps:3个文件不在同一目录中:

/path1/file1/path2/file1_file 
/path1/file2/path2/file2_file 
/path1/file3/path2/file3_file 
sandao9 回答:猫在3个文件中的特定列

编辑: 与OP聊天后才知道他/她的文件可能位于不同的位置,因此在这种情况下,您可以尝试以下操作。考虑到您有一个Input_file,所有文件名都在那里。我还没有测试。

file_name=$(awk '{val=(val?val OFS:"")"/path1/" $0 "/path2/" $0} END{print val}' file_names.txt)
awk '{print $3}' "$file_name"

OR

awk '{print $3}' $(awk '{val=(val?val OFS:"")"/path1/" $0 "/path2/" $0} END{print val}' file_names.txt)


您可以在此处使用awk

awk '{print $3}' /complete_path/file1 /complete_path/file2  /complete_path/file3
,

我认为

可能会更简单
$ sed 's_.*_"path1/&/path2/&"_' filenames | xargs awk '{print $3}'

awk仅被调用一次。

,

因此,您有一个包含数百个字符串的文件'dotnet-watch'

fnames.txt

每个字符串代表位于其中的文件

str1
str2
str3
str4
...

其中/path1/${str}/path2/${str}_file 是文件${str}中的值。

现在,您只想从第三个文件中读取第三列:

fnames.txt

始终记住KISS principle

本文链接:https://www.f2er.com/3158408.html

大家都在问