Если команда, чтобы посмотреть конкретные строки и значения в файлах

Я думаю, это очень просто, но я действительно новичок в 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
1
задан 5 April 2016 в 19:29

2 ответа

Это - некоторые симпатичные жесткие требования!
, Если можно справиться только с соответствием чему-либо большему, чем 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),
  • Выполнение команда.
0
ответ дан 6 April 2016 в 05:29
  • 1
    как люди выше предложенного, используйте /usr/bin/vi для vi и /usr/bin/sudo для sudo – spacelander 15 August 2017 в 01:43

Вот немного сценария оболочки, делающего задание:

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)
0
ответ дан 6 April 2016 в 05:29

Другие вопросы по тегам:

Похожие вопросы: