【问题标题】:How to get a string out of a plain text file [duplicate]如何从纯文本文件中获取字符串[重复]
【发布时间】:2017-05-02 20:47:36
【问题描述】:

我有一个 .txt 文件,其中包含一个包含哈希和密码的列表,所以它看起来像这样:

00608cbd5037e18593f96995a080a15c:9e:hoboken
00b108d5d2b5baceeb9853b1ad9aa9e5:1c:wVPZ

在这个 txt 文件中,我只需要提取密码并将它们添加到一个新的文本文件中,这样我就有一个如下所示的列表:

hoboken 
wVPZ
etc
etc
etc
etc

如何使用bash、脚本语言或简单地使用文本编辑器来执行此操作?

【问题讨论】:

  • 如果您的列表以: 分隔,您的列表似乎有 3 个信息,而不是两个。 Here's a very similar question 应该可以帮助您在 bash 中拆分文本文件中的行。之后,由您决定是否将 if 保存到新文件(可以使用 echo >> /path/file 之类的东西)。祝你好运。

标签: bash extract


【解决方案1】:

你也可以使用grep:

$ grep -o [^:]*$ file
hoboken
wVPZ
  • -o只打印匹配部分
  • [^:] 除了:
  • *所有匹配字符
  • $ 记录结束

【讨论】:

  • 非常感谢,我通过像你这样的人在这个社区学到了很多东西!谢谢大家!!
【解决方案2】:

使用 sed,删除最多 : 的字符串:

sed 's/.*://' file

【讨论】:

    【解决方案3】:

    我建议使用 awk 来获取文件的最后一列:

    awk -F ':' '{print $NF}' file
    

    输出:

    霍博肯 wVPZ

    【讨论】:

    • 有趣的方法,我投票给你。事实上,您的答案可能是错误的,因为我们不知道密码是否总是在最后一列——也许在某些行中我们可能有一个额外的最后一列,所以密码不会被检索到。另一方面,我的回答假设密码之前的字符串只有: 作为分隔符,而不会出现在字符串本身上,这也可能是错误的。啊..我喜欢这样的现实生活问题,信息有限/不充分,它们很有挑战性,让你深入思考。
    • @JamilSaid:是的,可以澄清这个问题。也许第二列是一种salt
    【解决方案4】:

    鉴于您的示例,cut 的以下使用将实现您想要的:

    cut -f3 -d':' /folder/file >> /folder/result
    

    上面的代码将删除每行第二个冒号 : 之前(包括)的任何内容,这将适用于您的情况,给出您的示例。结果存储在/folder/result

    编辑:我编辑了这个答案以使其更简单。

    【讨论】:

    • 非常感谢,我通过像你这样的人在这个社区学到了很多东西!
    猜你喜欢
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 2012-11-22
    • 2016-07-14
    • 2016-08-19
    相关资源
    最近更新 更多