How do I best pass arguments to a Perl one-liner?

前端 未结 7 1738
误落风尘
误落风尘 2020-12-05 05:27

I have a file, someFile, like this:

$cat someFile
hdisk1 active
hdisk2 active

I use this shell script to check:



        
7条回答
  •  天命终不由人
    2020-12-05 05:33

    Combining some of the earlier suggestions and adding my own sugar to it, I'd do it this way:

    perl -se '/hdisk([$d])/ && print "$1: ok\n" for <>' -- -d='[value]' [file]
    

    [value] can be a number (i.e. 2), a range (i.e. 2-4), a list of different numbers (i.e. 2|3|4) (or almost anything else, that's a valid pattern) or even a bash variable containing one of those, example:

    d='2-3'
    perl -se '/hdisk([$d])/ && print "$1: ok\n" for <>' -- -d=$d someFile 
    

    and [file] is your filename (that is, someFile).

提交回复
热议问题