grep regex每行的第二个单词并替换

松苹果34:

我有一个包含2列的文件:

user1 password1
user2 password2
...

用户和密码之间用制表符分隔,下一个用户在下一行。

我想检索每个用户的密码,并用其md5哈希替换它。

我知道这个正则表达式可以获取表格+密码,但是我不知道如何在变量中捕获它,因此我可以删除表格并处理我的密码字符串。

\t(.*)$

所以atm我的代码如下所示:

#!/bin/bash
while IFS="" read -r p || [ -n "$p" ]
do
  if [[ $p =~ (\t)(.*)$]]; then echo yep ; else echo nope; fi
done < $1
莉亚·格雷(Lea Gray):

在shell中执行:

#!/usr/bin/env sh

while read -r user passwd; do 
  md5passwd=$(printf %s "$passwd" | md5sum | cut -c-32)
  printf '%s\t%s\n' "$user" "$md5passwd"
done

或者使用将单词拆分为参数而不是cut

#!/usr/bin/env sh

while read -r u p; do 
  # shellcheck disable=SC2046 # intended word splitting
  set -- $(printf %s "$p" | md5sum )
  printf '%s\t%s\n' "$u" "$1"
done

密码的md5看起来比纯文本密码更安全。您不能忽略md5密码哈希非常弱。您确实不能使用自己的加密技术。

我的意思是真的!不要那样做!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

RegEx - 如何使用 grep 提取第二个匹配项

用管道grep响应第二个命令?

Grep模板,用于提取第二个单词只有两个元音的行

尝试与第二个文件中的文件中的单词匹配时,Grep不起作用

如何对上一个grep返回的文件执行第二个grep?

在第二个命令中使用`grep`的输出作为变量

在Java中实施管道,第二个程序无法及时输出(ping | grep)

bash脚本:解析grep命令输出并传递给第二个动作

使用 grep 或 awk 获取字符串的第二个值

SED、GREP、AWK、regex 不显示两个模式之间的内容,直到匹配第二个模式的结尾

从文件中读取行,在第二个文件中grep,并为每个$ line输出一个文件

为什么第二个正则表达式“ grep(/ keyword /,@ array”)在Perl中不能使用?

如何使用awk或grep在第二个关键字的第一个匹配项之前搜索第二个关键字的第一个匹配项?

用倒数第二个值替换每行的最后一个值

如何将第二个单词添加为文件中每行的编号?

如何对任何两个匹配的数字或第一个数字比第二个数字小的字符串进行grep?

替换每行中倒数第二个出现的字符串

文本处理-每行从开始位置替换第二个,从结束位置替换第二个

仅在包含第二个文件的目录中对一个文件中的文本进行grep的简单方法

如何使用grep从第一个双引号到第二个双引号提取具有多个(“)的字符串的内容

替换文件每一行中单词的第二个实例

替换字符串中的第二个重复单词

如何替换列表中的每第二个特定单词

正则表达式搜索并grep字符串中第一个关键字和第二个关键字的第二次出现之间的所有内容 - Python

在已知短语之间选择第二个单词-R regex

如何编写UNIX命令行以根据每行中的第二个单词对诗歌行进行排序

字符串操作-将第二个单词的字符替换为第一个单词

RegEx替换字符串中的第二个结束标记

Notepad ++ REGEX 查找并替换倒数第二个斜杠