Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
214 views
in Technique[技术] by (71.8m points)

linux - Grep arguments which contains at least a number

How can I grep arguments which contains at least a number in a shell script ?

Example (unlimited number of arguments !) :

./test.sh Hello W0rld1

It should outputs :

W0rld1

For my script, I already did that :

searchErrorNumber=$(echo "${@}" | grep -o '[0-9]*')

With the same example, It outputs just the numbers :

ERROR : 0 1 is not valid.

It should outputs the word like that :

ERROR : W0rld1 is not valid.

Thanks for helping me !

question from:https://stackoverflow.com/questions/65918233/grep-arguments-which-contains-at-least-a-number

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

In bash, you can use an array to keep the selected arguments. Use [[ ... == ... ]] with parameter matching to find the digits.

#! /bin/bash

contain_digit=()
for arg ; do
    shift
    if [[ "$arg" == *[0-9]* ]] ; then
        contain_digit+=("$arg")
    fi
done
printf '%s ' "${contain_digit[@]}"
echo

If you want to go the grep way, use printf to output each argument on a separate line (doesn't work for multiline arguments).

printf '%s
' "$@" | grep '[0-9]'

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...