到目前为止我有这个代码...
for i in {1..200}; do sed '$i,0!d' md5list.txt | grep -a ": "; done
我想运行basename
上面代码的每次迭代,如下所示:
basename $(for i in {1..200}; do sed '$i,0!d' md5list.txt | grep -a ": "; done)
我怎样才能做到这一点?有哪些关键字,以便我可以查找类似的问题?
答案1
您可以将输出传递到xargs
或while
.
for i in ...; done | xargs -n 1 basename
或者
for i in ...; done | while read filename; do basename $filename; done
两者大致相同。 Xargs 会快一点,但不够灵活。您可以阅读 的手册页xargs(1)
或 的手册页bash
。
顺便说一句,您的sed
陈述可能不会做您希望它做的任何事情。您正在引用变量('$i'
而不是"$i"
),因此 sed 将其解释为“在最后一行,插入新行“,0!d”。如果您只想获取一行,那么您可能应该使用sed -n "${i}p" md5list.txt
默认-n
情况下不打印每一行,而p
打印缓冲区。