Я хотел бы извлечь строку, содержащую вывод «секундное время» с выхода perf stat для некоторого сценария регистрации, над которым я работаю.Извлечение одной строки из командного выхода в терминале
Я не хочу записывать вывод в файл, а затем искать файл. Я хотел бы сделать это, используя «grep» или что-то подобное.
Вот что я пробовал:
perf stat -r 10 echo "Sample_String" | grep -eE "seconds time elapsed"
За что я получаю
grep: seconds time elapsed: No such file or directory
echo: Broken pipe
echo: Broken pipe
echo: Broken pipe
echo: Broken pipe
echo: Broken pipe
echo: Broken pipe
echo: Broken pipe
echo: Broken pipe
echo: Broken pipe
Performance counter stats for 'echo Sample_String' (10 runs):
0.254533 task-clock (msec) # 0.556 CPUs utilized (+- 0.98%)
0 context-switches # 0.000 K/sec
0 cpu-migrations # 0.000 K/sec
56 page-faults # 0.220 M/sec (+- 0.53%)
<not supported> cycles
<not supported> stalled-cycles-frontend
<not supported> stalled-cycles-backend
<not supported> instructions
<not supported> branches
<not supported> branch-misses
0.000457686 seconds time elapsed (+- 1.08%)
И я попробовал этот
perf stat -r 10 echo "Sample_String" > grep -eE "seconds time elapsed"
За что я получил
Performance counter stats for 'echo Sample_String -eE seconds time elapsed' (10 runs):
0.262585 task-clock (msec) # 0.576 CPUs utilized (+- 1.11%)
0 context-switches # 0.000 K/sec
0 cpu-migrations # 0.000 K/sec
56 page-faults # 0.214 M/sec (+- 0.36%)
<not supported> cycles
<not supported> stalled-cycles-frontend
<not supported> stalled-cycles-backend
<not supported> instructions
<not supported> branches
<not supported> branch-misses
0.000456035 seconds time elapsed (+- 1.05%)
Я новичок в таких инструментах, как grep, awk и sed. Надеюсь, кто-то может мне помочь. Я также не хочу записывать вывод в файл, а затем искать файл.
Спасибо, это сработало. Что делает «2> & 1» и что это значит? –
Он перенаправляет stderr на stdout. См. Это сообщение для получения дополнительной информации: http://stackoverflow.com/a/2342841/2679935 – julienc