sed を basename の引数として使用する

sed を basename の引数として使用する

これまで私はこのコードを持っています...

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ます-np

関連情報