Chinaunix

标题: awk中使用md5sum的问题 [打印本页]

作者: yhou31    时间: 2010-04-26 17:11
标题: awk中使用md5sum的问题
文件A:
京A 00001
京B 00002
京C 00003

想使用系统自带的md5sum函数来加密,输出文件B:
加密后的京A 00001
加密后的京B 00002
加密后的京C 00003


$awk '{print $0|"md5sum"}' fileA > fileB

结果输出文件B中只有一行,MS是把3行给加密成一个字符串了,怎么能对每一行分别做md5sum,最后输出3行呢?
作者: wtuter    时间: 2010-04-26 17:22
回复 1# yhou31


    [2]cat 2
A 00001
B 00002
C 00003
[2]
[2]
[2]
[2]cat 2 | md5sum
34c75e586fc7b78527f18cba1bc5de99  -
[2]awk '{print $0}' 2|md5sum
34c75e586fc7b78527f18cba1bc5de99  -
[2]awk '{print $0|"md5sum"}' 2  
34c75e586fc7b78527f18cba1bc5de99  -
[2]


这样看的是这个文件的md5码吧
作者: Shell_HAT    时间: 2010-04-26 17:27

  1. while read line; do echo ${line}|md5sum; done < urfile
复制代码

作者: yhou31    时间: 2010-04-27 11:25
我想用awk来实现,怎么弄呢?(3楼的做法我知道的)
作者: springwind426    时间: 2010-04-27 11:49

  1. awk '{system("echo "$0"|md5sum")}'  fileA > fileB
复制代码

作者: xuledw    时间: 2010-04-27 12:05
我想用awk来实现,怎么弄呢?(3楼的做法我知道的)
yhou31 发表于 2010-04-27 11:25

那也只能用5楼的system了
作者: nuclearxin    时间: 2010-04-27 12:31
用sed 很容易吧
作者: wmjie    时间: 2010-04-27 12:55
那也只能用5楼的system了
xuledw 发表于 2010-04-27 12:05



    awk '{("echo "$0"| md5sum ")|getline a; print a}'  fileA.txt > fileB.txt
作者: yhou31    时间: 2010-04-27 14:58
Shell_HAT 发表于 2010-04-26 17:27



    我得出的结果是:
$ cat fileB
7a158407e89a18457f97286613484ca0  -
b12ab4645118ae942e58d48c11a0ff88  -
66103b737c883e4a0f47b27034b4f7a2  -

每行的最后怎么有个"-"这个符号?

我需要将最后这个符号去掉:
$awk '{system("echo "$0"|md5sum|awk '{print "$1"}'")}'  fileA > fileB

但是执行失败了。

$awk '{$0=system("echo "$0"|md5sum");print $1}'  fileA > fileB

也不行。
作者: Shell_HAT    时间: 2010-04-27 15:19
回复 9# yhou31

  1. awk '{system("echo "$0"|md5sum|sed \"s/ .*//\"")}' fileA >fileB
复制代码

作者: wmjie    时间: 2010-04-27 16:16
我得出的结果是:
$ cat fileB
7a158407e89a18457f97286613484ca0  -
b12ab4645118ae942e58d4 ...
yhou31 发表于 2010-04-27 14:58



    awk '{("echo "$0"| md5sum ")|getline a; split(a,b," "); print b[1]}' a.txt > b.txt
作者: nuclearxin    时间: 2010-04-27 16:26
回复 11# wmjie


4
4
4
2
2
2
1
1
1
4
4
4
用这段数据试试 就出错啦
作者: nuclearxin    时间: 2010-04-27 16:30

  1. [symphony@archlinux bash]$ cat aaa
  2. 京A 00001
  3. 京B 00002
  4. 京C 00003
  5. [symphony@archlinux bash]$ sed 's/\([^ ]\+\)\(.*\)$/echo \1|md5sum;echo \2/e' aaa|sed 'N;s/-\n//'
  6. 8aa52afed6fd1e660fc5b9b6a7e06f27  00001
  7. 2855bfe7ed1b3d2b24f8c3dcaeeffe47  00002
  8. cd3f6c546405e1a97469cef30392a651  00003
复制代码

作者: springwind426    时间: 2010-04-27 19:39

  1. awk '{cmd=sprintf("echo %s | md5sum",$0);cmd |& getline;print $1}'  数据文件

复制代码

作者: bbgg1983    时间: 2010-04-27 19:43
回复 14# springwind426


    春哥的awk让人看的如梦如痴
作者: nuclearxin    时间: 2010-04-27 20:01
回复 14# springwind426


    |&
&干嘛用的?
作者: springwind426    时间: 2010-04-27 20:06
回复  springwind426


    |&
&干嘛用的?
nuclearxin 发表于 2010-04-27 20:01



    运行命令,并从那个命令的输出中读取信息
作者: nuclearxin    时间: 2010-04-27 20:17
回复 17# springwind426


    去掉& 不也行吗
作者: nuclearxin    时间: 2010-04-27 20:19
本帖最后由 nuclearxin 于 2010-04-27 20:21 编辑
运行命令,并从那个命令的输出中读取信息
springwind426 发表于 2010-04-27 20:06

  1. symphony@ubuntu:~/bash$ cat a
  2. 4 3
  3. 4 4
  4. 4 t
  5. 2 g
  6. 2 r
  7. 2 3
  8. 1 i
  9. 1 l
  10. 1 f
  11. 4 f
  12. 4 m
  13. 4 v

  14. symphony@ubuntu:~/bash$ awk '{cmd=sprintf("echo %s | md5sum",$0);cmd |& getline;print $1}' a
  15. awk: 1: unexpected character '&'
复制代码

作者: springwind426    时间: 2010-04-27 20:23
nuclearxin 发表于 2010-04-27 20:19



    你用的是mawk,而我用的是gawk
作者: nuclearxin    时间: 2010-04-27 20:48
ok
|& 貌似是协进程 不太了解
作者: howge    时间: 2010-05-04 16:09
回复 1# yhou31
追加 “>>”
作者: Shell_HAT    时间: 2010-05-04 16:10
回复 22# howge


你没有理解楼主的问题吧?
作者: canigreen    时间: 2013-05-21 11:02
awk  {system("md5sum " $1)}'
注意md5sum后面有一个空格..
作者: lcltmac    时间: 2013-05-22 20:16
回复 23# Shell_HAT 大神,新手请教两个问题:1.system的作用是什么?  2.您那个sed表达式中”.*“怎么理解?   谢谢!!!!


   
作者: Shell_HAT    时间: 2013-05-22 22:23
回复 25# lcltmac


1.system的作用是什么?

调用系统命令

2.您那个sed表达式中”.*“怎么理解?

正则表达式
http://bbs.chinaunix.net/tree/index_100_1/

作者: 惟吾无为    时间: 2013-05-23 09:20
我只想说:echo会在结尾加\n。
作者: lcltmac    时间: 2013-05-23 12:52
回复 26# Shell_HAT    谢谢!!


   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2