[英]Command line bash how to extract json text from a curl output of a webpage
[英]Extract single line from command output in terminal
我想從我正在處理的某些日志記錄腳本的perf stat輸出中提取包含“ seconds time經過時間”輸出的行。
我不想將輸出寫入文件,然后搜索該文件。 我想用'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)是陌生的。 我希望有人能幫助我。 我也不想將輸出寫入文件,然后搜索文件。
這里的問題是您想要的輸出發送到stderr
而不是標准輸出。
您可以通過將stderr重定向到/ dev / null來看到這一點,並且您會看到剩下的唯一結果就是“ echo”命令中的結果。
~/ perf stat -r 10 echo "Sample_String" 2>/dev/null
Sample_String
Sample_String
Sample_String
Sample_String
Sample_String
Sample_String
Sample_String
Sample_String
Sample_String
Sample_String
為了執行您想要的操作,您將不得不將perf
的stderr重定向到標准輸出,並隱藏標准輸出。 這樣, perf
的輸出將發送到grep
命令。
~/ perf stat -r 10 echo "Sample_String" 2>&1 >/dev/null | grep 'seconds time elapsed'
0,013137361 seconds time elapsed ( +- 96,08% )
看起來您想要的輸出將輸出到stderr
。 嘗試:
perf stat -r 10 echo "Sample_String" 2>&1 | grep "seconds time elapsed"
這可以按照您想要的方式工作:
grep -e "seconds time elapsed" <<< "$(perf stat -r 10 echo "Sample_String" 2>&1 >/dev/null)"
輸出:
0.000544399 seconds time elapsed ( +- 2.05% )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.