【发布时间】:2020-06-18 16:48:21
【问题描述】:
我的数据用 : 分隔
AA:w_c;w_c;r_c:1;3
BB:sync;sync:4
CC:t_wak;t_wak:6;7;8
我只需要在第 2 列中将一个值打印为唯一值。如果有多个唯一值,则需要在另一个文件中打印。
我试过了:
#!/bin/bash
sort -u -t : -k2,2 file >> txt
awk -F: '{gsub(";"," ",$3)}1' txt
Output:
BB:sync;sync:4
CC t_wak;t_wak 6 7 8
AA w_c;w_c;r_c 1 3
实际上,我正在尝试对第 2 列中的值进行排序和唯一化,并将该输出复制到另一个名为“txt”的文件中。然后我使用 AWk 替换 ;第 3 列中的空格似乎上面的代码不起作用。
所需的输出 1:
BB:sync:4
CC:t_wak:6 7 8
以上两个值是我们需要打印的实际输出,因为在第 2 列中它只包含一个值。
下面的需要在另一个文件中打印,因为在第 2 列中它包含多个值。
所需的输出 2:
AA:w_c;r_c:1;3
w_c
r_c
在第 2 列中,它应该只有一个值,如果有多个,则需要在另一个文件中打印,如上所示。
【问题讨论】:
-
首先感谢您在问题中添加表单代码。您能否在您的问题中提供更清晰的输入和预期输出,然后让我们知道。
-
@RavinderSingh13 我的输入是冒号分隔的文件,在第 2 列中它只需要一个值而不是 2 或更多..所以这就是我使用 sort 和 uniq 删除重复项并只打印一个的原因。基本上,在我的第 2 列输入中,只有重复值。在极少数情况下,我们会看到两个或更多的非重复值。
-
@RavinderSingh13 因此,如果值不重复,那么如果我正在打印唯一值,则不应在同一个文件中打印。它应该进入另一个文件。
-
@RavinderSingh13 如果您在实际/期望输出中遇到任何混淆,请告诉我。
-
@Kent 95% 的情况下它们会被重复,但极少情况下它们是由 ; 分隔的非重复值第 2 列中的分隔值 .. 像 clo1:a;a:col3:cl4 col1:a;b:clo3:col4