@H_
502_0@我是全新的shell脚本,似乎无法弄清楚这个看似简单的任务。
我有一个约250行的文本
文件(ciphers.txt),我想使用每行的第一列作为参数在
一个命令。 任何帮助将不胜感激!@H_
502_0@该命令是:@H_
502_0@openssl s_client -connect host:port -cipher argument@H_
502_0@当我一次只做
一个,但是我真的不想运行同样的命令250+次。 这是我的脚本到目前为止:@H_
502_0@awk '{command = "openssl s_client -connect localhost:4433 -cipher > results.txt" print $0 | command}' ciphers.txt@H_
502_0@我不断收到
一个错误,所以我很确定
我有一个语法
错误的地方。 awk的
输出被附加在后面?@H_
502_0@如何从
文件中find单词到另
一个文件? Linux的@H_
502_0@如何
输出有效/无效input列表的计数?@H_
502_0@比较不同列的两个
文件并打印不同的列@H_
502_0@通过使用grep来计算第1位和第14位之
间的零的
数量@H_
502_0@有没有办法在Unix中的
文件中
删除重复的头
文件?@H_
502_0@使用awk来计算logging的
数量@H_
502_0@如何在Bash脚本中的AWK中传递string作为参数@H_
502_0@修剪awk中的string的前导和尾随空格@H_
502_0@在awk中转义HTML特殊字符@H_
502_0@需要在awk unix中使用
代码或使用substr@H_
502_0@在awk中使用sy
stem :@H_
502_0@awk '{ sy
stem("openssl s_client -connect host:port -cipher " $1) }' ciphers.txt@H_
502_0@你的命令有很多
错误。 对于你想要使用第一列的人。 这在awk中被称为$ 1而不是$ 0(这将是整个行)。 其次,你在命令定义的末尾忘了分号。@H_
502_0@要真正运行命令,你可以使用sy
stem()或管道(后者只有在命令可以从标准输入读取时才有意义,我认为openssl在你的情况下是不行的)。 最简单的会是这样的@H_
502_0@awk '{cmd="openssl s_client -connect host:port -cipher" $1; sy
stem(cmd)}' results.txt@H_
502_0@请注意,这只会返回
退出状态。 如果你需要捕获标准
输出,你将不得不通过getline来
输出命令。@H_
502_0@安德烈亚斯@H_
502_0@PS:发布你得到的实际
错误,会有所帮助。@H_
502_0@xargs命令专门用于该用例。@H_
502_0@awk '{print $0}' <ciphers.txt | xargs -I{} openssl s_client -connect host:port -cipher {} >>results.txt@H_
502_0@这个版本比较长,因为awk已经被用来解析$0 。 然而,当你已经有
一个使用的列表,并且没有运行一些可以执行子shell的东西的时候, xargs会派上用场。 例如, awk可以用于执行mv但是xargs要简单得多。@H_
502_0@ls -1 *.txt | xargs -I{} mv "{}" "{}.$(date '+%y%m%d')"@H_
502_0@上述命令将当前目录中的每个文本
文件重命名为日期
标记的备份。 awk的等价物需要在date命令的结果中
加上一个变量,将其传递给awk ,然后构造并执行该命令。@H_
502_0@xargs命令还可以将多个参数累加到一行中,如果输入具有多个列,或者在输入
文件中将单个记录拆分为重复组时,这些参数将很有用。@H_
502_0@有关所有使用
方法的更多信息,请参阅UNIX Mantra上的“xargs”一体化教程指南 。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。