繁体   English   中英

管道命令中的卷曲和xargs

[英]Curl and xargs in piped commands

我想处理密码为纯文本(逗号分隔; passwd是csv文件中导出数据库的cv文件中的第5个字段)的旧数据库,以对它们进行加密,以供dokuwiki进一步使用。 这是我的bash命令(在那里有grep和sed可以从curl输出中提取加密的passwd):

cat users.csv | awk 'FS="," { print $4 }' | xargs  -l bash -c 'curl -s --data-binary "pass1=$0&pass2=$0" "https://sprhost.com/tools/SMD5.php" -o - ' | xargs  | grep -o '<tt.*tt>' | sed -e 's/tt//g' | sed -e 's/<[^>]*>//g'
  • 我从xargs得到以下评论

    xargs:不匹配的单引号; 缺省情况下,除非使用-0选项,否则引号对xargs来说是特殊的

  • 并且仅处理文件的第一行,然后不追加任何内容。

使用-0选项并使用引号不能解决任何问题。 我在命令行哪里错了? 也许使用更高级的语言会更适合执行此操作。

谢谢LM的帮助

通常,如果您有这么长的命令,最好在出现问题时将其拆分。 通过管道:

cat users.csv |

没什么意外的。

awk 'FS="," { print $4 }' |

您可能想做awk 'BEGIN {FS=","} { print $4 }' 在管道中尝试前两个命令,看看它们是否产生正确的答案。

xargs  -l bash -c 'curl -s --data-binary "pass1=$0&pass2=$0" "https://sprhost.com/tools/SMD5.php" -o - ' |

那里没什么问题,尽管可能有更好的方法来执行MD5哈希。

xargs  |

xargs在管道中做什么? 应该将其删除。

grep -o '<tt.*tt>' |

请注意,这将产生两行:

<tt>$1$17ab075e$0VQMuM3cr5CtElvMxrPcE0</tt>
<tt>&lt;your_docuwiki_root&gt;/conf/users.auth.php</tt>

这可能不是您所期望的。

sed -e 's/tt//g' |
sed -e 's/<[^>]*>//g'

不过,这将删除html-tags

sed 's/<tt>//;s/<.tt>//'

会做同样的。

所以我会说错误的awk和过多的xargs

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM