我有一个如下文字文件。
1 1223 abc
2 4234 weroi
0 3234 omsder
1 1111 abc
2 6666 weroi
我希望列3具有唯一值。所以我想拥有以下文件。
1 1223 abc
2 4234 weroi
0 3234 omsder
我可以在Linux中使用一些基本命令吗?不使用Java或其他东西。
答案 0 :(得分:1)
您可以使用一些awk
脚本执行此操作。以下是我提出的解决问题的一段代码:
awk 'BEGIN {col=3; sep=" "; forbidden=sep} {if (match(forbidden, sep $col sep) == 0) {forbidden=forbidden $col sep; print $0}}' input.file
BEGIN
关键字声明forbidden
字符串,用于监控第3列值。然后,match
关键字检查当前行的第3列是否包含任何forbidden
值。如果没有,它会将列的内容添加到forbidden
列表并打印整行。
此处,sep=" "
实例化分隔符。我们在每个sep
值之间使用forbidden
,以避免通过将多个值放在一起而创建的单词。例如:
1 1111 ta
2 2222 to
3 3333 t
4 4444 tato
在这种情况下,如果没有分隔符,t
和tato
将被视为forbidden
值。我们使用" "作为分隔符,因为它默认用于分隔每个列,因此列不能在其名称中包含空格。
请注意,如果要更改需要删除重复的列的编号,只需使用所需列的编号调整col=3
(整行为0,第一列为1) ,2为第二,......)