我查找的行存储在文件 data.txt 中,并且是唯一只出现一次的文本行。
如何使用 linux 找到特定的行?
这有点旧,但我想你正在寻找这个......
cat data.txt | sort | uniq -u
这将显示文件中仅出现一次的唯一值。如果您要问,我假设您熟悉“有线”?如果是这样,这就是你要找的。
为了提供一些上下文(我需要更多代表发表评论),这是一个名为 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 进行排序,找到唯一的行并将其打印回终端中。
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
为您的帖子添加更多信息。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。例如一些从线切片。
sort data.txt | uniq -c | grep 1
你会发现只有一个会发生一次
sort data.txt | uniq -c | grep 1\ ?*
它将打印仅出现一次的唯一文本不要忘记在反斜杠后放置空格
一个只使用一个工具,awk:
awk '{a[$1]++}END{for(i in a){if(a[i] == 1){print i} }}' data.txt