只是想知道是否有人能幫助我。我有一個包含一行的文件:如何搜索字符串並將其放入shell腳本中的變量中?
W32i APP - 8.0.0.xxxxx shp 6SFE25~1.EXE
xxxxx是5位數字,每次的數字都不相同。我希望能夠搜索xxxxx並將其放入一個變量中,以便可以使用此varibale。我使用grep和sed?
只是想知道是否有人能幫助我。我有一個包含一行的文件:如何搜索字符串並將其放入shell腳本中的變量中?
W32i APP - 8.0.0.xxxxx shp 6SFE25~1.EXE
xxxxx是5位數字,每次的數字都不相同。我希望能夠搜索xxxxx並將其放入一個變量中,以便可以使用此varibale。我使用grep和sed?
A.TXT
W32i APP - 8.0.0.xxxxx shp 6SFE25~1.EXE
代碼
num=$(< a.txt)
num=${num#*.0.0.} # "left" remove everything up to .0.0.
num=${num%% *} # "right" remove "all" after " " char
echo "num=${num}"
輸出 XXXXX
你會很高興你花時間瞭解變量修飾符如${num#xxx}, ${num##xx}, ${num%x}, ${num%%x}
的工作方式。高級shell還支持sed
,如替換,${num/0/9}
和${num//0/9}
。
IHTH
#!/bin/sh
read < a.txt
[[ $REPLY =~ 8.0.0.([^\ ]*) ]]
echo ${BASH_REMATCH[1]}
輸出
xxxxx
perl -lne 'm/(\d{5})/g;print $1'
測試here
它的工作原理!評論真的幫助我學習,非常感謝! :) – Babycece
要查看'%'和'%%'修飾符之間的區別,此代碼就是一個很好的例子,即只在'xxxxx shp'中使用'%'結果,因爲刪除從右開始,找到第一個'',並刪除到最後。使用'%%',刪除從右側開始,但隨後查找所有''(向右移動),然後刪除右側的所有內容,只留下'xxxxx'。祝你們好運。 – shellter
我正要問你的區別,你剛剛解釋它!非常感謝您的詳細解釋。這對於像我這樣的新手來說非常有幫助:) xxx – Babycece