Get the last 4 characters of output from standard out

后端 未结 9 1983
借酒劲吻你
借酒劲吻你 2020-12-24 13:00

I have a script that is running and uses

lspci -s 0a.00.1 

This returns

0a.00.1 usb controller some text device 4dc9


        
相关标签:
9条回答
  • 2020-12-24 13:55

    How about tail, with the -c switch. For example, to get the last 4 characters of "hello":

    echo "hello" | tail -c 5
    ello
    

    Note that I used 5 (4+1) because a newline character is added by echo. As suggested by Brad Koch below, use echo -n to prevent the newline character from being added.

    0 讨论(0)
  • 2020-12-24 13:57

    If the real request is to copy the last space-separated string regardless of its length, then the best solution seems to be using ... | awk '{print $NF}' as given by @Johnsyweb. But if this is indeed about copying a fixed number of characters from the end of a string, then there is a bash-specific solution without the need to invoke any further subprocess by piping:

    $ test="1234567890"; echo "${test: -4}"
    7890
    $
    

    Please note that the space between colon and minus character is essential, as without it the full string will be delivered:

    $ test="1234567890"; echo "${test:-4}"
    1234567890
    $
    
    0 讨论(0)
  • 2020-12-24 13:57

    instead of using named variables, develop the practice of using the positional parameters, like this:

    set -- $( lspci -s 0a.00.1 );   # then the bash string usage:
    echo ${1:(-4)}                  # has the advantage of allowing N PP's to be set, eg:
    
    set -- $(ls *.txt)
    echo $4                         # prints the 4th txt file.  
    
    0 讨论(0)
提交回复
热议问题