我正在執行下面的命令以從 json 輸出中獲取特定的字串,在這里我使用字串“uri”進行 grepping,它會列印所有必需的欄位。
# curl -X GET --insecure -H "$(cat /token/.bearer_header)" http://localhost:3000/api/search?query=% | sed -e
's/[{}]/''/g' | awk -v RS=',"' -F: '/^uri/ {print $2}'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2410 0 2410 0 0 40166 0 --:--:-- --:--:-- --:--:-- 40847
"ab/any-dashboard"
"ab/many-dashboard"
"ab/too-dashboard"
"ab/maximum-dashboard"
"ab/minimum-dashboard"
現在我想將例如“ab/any-dashboard”替換為僅any-dashboard,這意味著上面的命令應該列印如下
any-dashboard
many-dashboard
too-dashboard
maximum-dashboard
minimum-dashboard
任何人都可以在這里幫助我我用 sed 嘗試了幾件事,但沒有得到確切的結果,而且我對 JQ 一無所知。
問候, 山姆
uj5u.com熱心網友回復:
這可能對你有用(GNU sed):
sed -nE 's#".*/(.*)"#\1#p' file
關閉隱式列印-n,并打開擴展正則運算式-E(-r在某些平臺上)。
所需字串上的模式匹配并將其替換為預期部分并列印結果。
NB (...)LHS 中的替換命令稱為反向參考,可以在 RHS 中呼叫。也#用作替代分隔符而不是通常/的匹配的一部分。
uj5u.com熱心網友回復:
如果下面的 awk 陳述句(多字符 RS 需要 GNU awk)位于命令列的末尾,請嘗試添加此 gsub 函式,看看是否得到了您想要的:
Current:
awk -v RS=',"' -F: '/^uri/ {print $2}'
改成:
awk -v RS=',"' -F: '/^uri/ {gsub("/","-",$2);print $2}'
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/330820.html
