使用 sed 作为基本名称的参数

使用 sed 作为基本名称的参数

到目前为止我有这个代码...

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

您可以将输出传递到xargswhile.

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打印缓冲区。

相关内容