Я думаю, это очень просто, но я действительно новичок в Ubuntu. Я в основном хочу дать команду Ubuntu просмотреть файлы с определенным суффиксом (QC.fastq.log), а затем просмотреть значение в строке 3 в скобках, а затем, если оно больше 0,1, затем выполнить другую команду.
Итак, у меня есть
for file in *QC.fastq.log
Do
If [ -e $file ] # this is where I thing the line and bracket command should be
then
the next command
Есть идеи?
Пример файла:
6882 reads; of these:
6882 (100.00%) were unpaired; of these:
1088 (15.81%) aligned 0 times
5792 (84.16%) aligned exactly 1 time
2 (0.03%) aligned >1 times
84.19% overall alignment rate
Это - некоторые симпатичные жесткие требования!
, Если можно справиться только с соответствием чему-либо большему, чем 0,09, это должно работать:
find -name '*QC.fastq.log' -exec sh -c 'sed -n 3p {} && grep -q \(0.0 || echo "DO SOMETHING"' \;
sed
||
) соответствие (0.0
(который будет только когда-либо находиться под 0.1), Вот немного сценария оболочки, делающего задание:
filemask="*QC.fastq.log"
while read -r -d \0' file
do
if [ "$(echo "$(sed -nr "3s/^.*\((.*)%\).*$/\1/p}" "${file}") > 0.1" | bc)" = "1" ]
then
echo "${file}" is greater 0.1
fi
done < <(find . -name "${filemask}" -print0)
/usr/bin/vi
дляvi
и/usr/bin/sudo
дляsudo
– spacelander 15 August 2017 в 01:43