【发布时间】:2015-08-12 03:00:19
【问题描述】:
我使用的是 Linux bash 版本 4.1.2
我有一个制表符分隔的 input_file 有 5 个字段,我想计算每一行的 MD5 并将 md5sum 放在每一行的末尾。
因此,预期的 output_file 应该每行有 6 个字段。
这是我的代码:
cat input_file | while read ONELINE
do
THEMD5=`echo "$ONELINE" | md5sum | awk '{print $1}'`
echo -e "${ONELINE}\t${THEMD5}"
done > output_file
编码大部分时间都运行良好。
但是,如果 ONELINE 以单/双制表符结尾,则尾随制表符将消失!
因此,由于缺少选项卡,输出文件有时会包含 4 或 5 行字段。
我尝试在while语句中添加IFS=或IFS=''或IFS=$'\n'或IFS-$'\012',但仍然无法解决问题。
请帮忙。
萧亚文
【问题讨论】:
-
如果您有问题没有解决,您需要提供一个 SSCCE 来演示它——在这种情况下,修改您的脚本以生成它自己的输入就足够了。例如:
< <(printf 'hello\nhello\t\t\n')-- 如果这两行的 md5sum 不同,就会清楚地证明这个错误。 -
查看ideone.com/UqYj7R 了解完整 MCVE 的示例,包括(工作!)输入数据。