У меня есть каталоги с именами от 3 до 8. В каждом из них есть файл с именем OUTCAR. Мне нужно извлечь из этого файла число следующим образом:
grep Elapsed OUTCAR|egrep -o "[0-9]+\.[0-9]+"
Рассматриваемые строки выглядят так:
Elapsed time (sec): 45123.137
Итак, в конце я хочу напечатать два столбца как имя каталога и вывод egrep
, например:
3 80650.077
..
8 42757.057
Например, когда я захожу в папку 3 с grep Elapsed OUTCAR|egrep -o "[0-9]+\.[0-9]+"
, я получаю 80650.077
Большое спасибо за помощь!
С grep
и sed
:
grep -oP 'Elapsed time \(sec\):\K.*' {3..8}/OUTCAR | sed 's_/OUTCAR:__'
Это использует расширение фигурной скобки {3..8}/OUTCAR
создать этот список аргументов grep
процесс:
3/OUTCAR 4/OUTCAR 5/OUTCAR …
grep
поиски эти файлы для согласующих отрезков длинной линии и выводов только часть после двоеточия с путем файла прямого доступа и именем. sed
удаляет нежелательную часть имени файла из каждой строки, оставляя просто имя каталога и соответствие (который уже содержит пространство).