如何過濾前 8 個字符中至少有 1 個數字且第 9 個字符中至少有下劃線的字串?
我嘗試過濾字母數字并不能保證前 8 個字符中至少存在一個數字:
grep "^[a-z0-9]\{8\}_"
輸入示例:
zjuscer3_prod_backend_1 5fa9a2774f13
prod_frontend_1 a55eb34aed85
rhg8ik8s_stag_frontend.1 74d419c1c15e
stag_backend_1 52ade8af8cca
syhvctf4_stag_notebook_1 b846d511c937
目標輸出:
zjuscer3_prod_backend_1 5fa9a2774f13
rhg8ik8s_stag_frontend.1 74d419c1c15e
syhvctf4_stag_notebook_1 b846d511c937
uj5u.com熱心網友回復:
怎么樣
awk 'substr($1,9,1) == "_" && substr($1,1,8) ~ /[[:digit:]]/'
uj5u.com熱心網友回復:
排除前 8 個字符中沒有數字的行,只保留第 9 位帶有下劃線的行。使用 awk:
$ awk '!/^[^0-9]{8}/&&/^.{8}_/' foo.txt
zjuscer3_prod_backend_1 5fa9a2774f13
rhg8ik8s_stag_frontend.1 74d419c1c15e
syhvctf4_stag_notebook_1 b846d511c937
使用 grep:
$ grep -Ev '^[^0-9]{8}' foo.txt | grep -E '^.{8}_'
zjuscer3_prod_backend_1 5fa9a2774f13
rhg8ik8s_stag_frontend.1 74d419c1c15e
syhvctf4_stag_notebook_1 b846d511c937
使用 sed:
$ sed -nE '/^[^0-9]{8}/!{/^.{8}_/p}' foo.txt
zjuscer3_prod_backend_1 5fa9a2774f13
rhg8ik8s_stag_frontend.1 74d419c1c15e
syhvctf4_stag_notebook_1 b846d511c937
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/340851.html
