13

我查找的行存储在文件 data.txt 中,并且是唯一只出现一次的文本行。

如何使用 linux 找到特定的行?

4

7 回答 7

35

这有点旧,但我想你正在寻找这个......

cat data.txt | sort | uniq -u

这将显示文件中仅出现一次的唯一值。如果您要问,我假设您熟悉“有线”?如果是这样,这就是你要找的。

于 2014-06-05T01:02:51.387 回答
14

为了提供一些上下文(我需要更多代表发表评论),这是一个名为 Bandit 的在线“战争游戏”中的一个问题,它涉及使用命令行来发现在线 Linux 服务器上的密码以提升级别。

对于那些想要完整查看 data.txt 的人,我在这里粘贴了它,但它看起来像这样:

NN4e37KW2tkIb3dC9ZHyOPdq1FqZwq9h
jpEYciZvDIs6MLPhYoOGWQHNIoQZzE5q
3rpovhi1CyT7RUTunW30goGek5Q5Fu66
JOaWd4uAPii4Jc19AP2McmBNRzBYDAkO
JOaWd4uAPii4Jc19AP2McmBNRzBYDAkO
9WV67QT4uZZK7JHwmOH0jnhurJMwoGZU
a2GjmWtTe3tTM0ARl7TQwraPGXgfkH4f
7yJ8imXc7NNiovDuAl1ZC6xb0O0mMBx1
UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR
FcOJhZkHlnwqcD8QbvjRyn886rCrnWZ7
E3ugYDa6Wh2y8C8xQev7vOS8O3OgG1Hw
E3ugYDa6Wh2y8C8xQev7vOS8O3OgG1Hw
ME7nnzbId4W3dajsl6Xtviyl5uhmMenv
J5lN3Qe4s7ktiwvcCj9ZHWrAJcUWEhUq
aouHvjzagN8QT2BCMB6e9rlN4ffqZ0Qq
ZRF5dlSuwuVV9TLhHKvPvRDrQ2L5ODfD
9ZjR3NTHue4YR6n4DgG5e0qMQcJjTaiM
QT8Bw9ofH4x3MeRvYAVbYvV1e1zq3Xim
i6A6TL6nqvjCAPvOdXZWjlYgyvqxmB7k
tx7tQ6kgeJnC446CHbiJY7fyRwrwuhrs

一种方法是使用:

sort data.txt | uniq -u

该命令与 cat 类似,它显示文件的内容,但它按行按字典顺序sort对文件进行排序(它按字母顺序重新排序,以便匹配的内容放在一起)。

|是一个将输出从一个命令重定向到另一个命令的管道。

uniq命令报告或省略重复的行,并通过传递-u参数告诉它只报告唯一的行。

像这样一起使用,该命令将按每行按字典顺序对 data.txt 进行排序,找到唯一的行并将其打印回终端中。

于 2015-07-14T13:04:34.283 回答
2
sort -u data.txt | while read line; do if [ $(grep -c $line data.txt) == 1 ] ;then echo $line; fi; done 

是我的解决方案,直到我在这里看到简单的解决方案:

sort data.txt | uniq -u
于 2016-08-22T20:42:05.510 回答
1

为您的帖子添加更多信息。data.txt长得怎么样?像这样:

11111111
11111111
pass1111
11111111

或者像这样

afawfdgd
password
somethin
gelse...

而且,您知道密码在文件中还是您搜索不重复的字符串。

如果您知道密码,请使用类似的东西

cat data.txt | grep 'password'

如果您不知道密码并且此密码只是文件中的唯一行,您必须创建一个脚本。例如在 Python 中

file = open("data.txt","r")
f = file.read()
for line in f: 
   if 'pass' in line:
        print pass

当然用别的东西代替 pass。例如一些从线切片。

于 2012-10-08T14:08:01.623 回答
1
sort data.txt | uniq -c | grep 1

你会发现只有一个会发生一次

于 2020-11-18T19:41:39.087 回答
1
sort data.txt | uniq -c | grep 1\ ?*

它将打印仅出现一次的唯一文本不要忘记在反斜杠后放置空格

于 2017-11-27T18:25:34.640 回答
1

一个只使用一个工具,awk

awk '{a[$1]++}END{for(i in a){if(a[i] == 1){print i} }}' data.txt
于 2017-12-08T17:40:06.163 回答