将sed命令从linux转换为freebsd / macos



我有一个非常小的脚本,有人在这里帮助我。它删除所有小于1000比特的轨道。在linux下工作得很好。在freebsd和macos下也可以工作,但是会输出很多错误消息,在sed部分显示太多参数,这很烦人。有人能帮我把这个转换成在freebsd/macos下工作吗?谢谢你


for flacfile in *.flac; do
[ $(mediainfo "$flacfile" | grep 'Bit rate' | grep -oi '[0-9].[0-9]*'
| sed 's/s//g') -lt 1000 ] && rm "$flacfile"                                                                          $
done

错误消息

/usr/local/bin/flac-remove: command substitution: line 6: syntax error near unexpected token `|'
/usr/local/bin/flac-remove: command substitution: line 6: `| sed 's/s//g''

建议1

使用[[]]bash进行数值测试

for flacfile in *.flac; do
[[ $(mediainfo "$flacfile" | grep 'Bit rate' | grep -oi '[0-9].[0-9]*'
| sed 's/s//g') -lt 1000 ]] && rm "$flacfile"                                                                          $
done

建议2

用单个awk命令替换grep 'Bit rate' | grep -oi '[0-9].[0-9]*' | sed 's/s//g'

awk '/Bit rate/ && /[0-9].[0-9]*/{gsub("[[:space:]]","");print}'

:

for flacfile in *.flac; do
[[ $(mediainfo "$flacfile" | awk '/Bit rate/ && /[0-9].[0-9]*/{gsub("[[:space:]]","");print}') -lt 1000 ]] && rm "$flacfile"                                                                          $
done

最新更新