
私はLinuxシステムでいくつかのタスクを実行するためにgrep、sed、およびcutコマンドを使用しています。
zgrep -A1 "^module" *.v.gz | sed -n -e 's/^\(module \)*\(.*(.*)\).*$/\2/p' | cut -f1 -d"("
これは.v.gzファイル拡張子を持つファイルで実行され、出力ファイルの拡張子が.txtであることを望みます。
たとえば、次のファイル名を入力します。
abcd.v.gz
efgh.v.gz
ijkl.v.gz
mnop.v.gz
出力ファイル名
abcd.txt
efgh.txt
ijkl.txt
mnop.txt
だから、同じファイル名の接頭辞を保持し、拡張子を変更したいと思います。ファイルの数に関係なく、どうすればこれを行うことができますか?
私はシェルプリミティブを探していません
答え1
ループを使用したfor
各ファイルの処理
for f in *.v.gz
do
zgrep -A1 "^module" "$f" |
sed -n -e 's/^\(module \)*\(.*(.*)\).*$/\2/p' |
cut -f1 -d"(" > "${f%.v.gz}.txt"
done
sedプログラムについていくつかの質問があります。
sed -n -e 's/^module *\([^(]*\).*$/\1/p'
それでは全く切る必要はありません。