我需要提取shell腳本中最後一個下劃線之前的值。如何提取shell腳本中最後一個下劃線之前的值
實施例:
Input: first_second_third_mmddyyy.csv
Output: first_second_third
Input: first_second_mmddyy.csv
Output: first_second
我需要提取shell腳本中最後一個下劃線之前的值。如何提取shell腳本中最後一個下劃線之前的值
實施例:
Input: first_second_third_mmddyyy.csv
Output: first_second_third
Input: first_second_mmddyy.csv
Output: first_second
可以使用此sed
:
sed 's/_[^_]*$//g' file
測試:
$ echo "first_second_third_mmddyyy.csv" | sed 's/_[^_]*$//g'
first_second_third
$ echo "first_second_mmddyy.csv" | sed 's/_[^_]*$//g'
first_second
也可以使用AWK或如下切割;
awk -F '_' 'NF{NF-=1};1' file
echo "first_second_third_mmddyyy.csv" | rev | cut -d '_' -f2- | rev
例如;
$ echo "first_second_third_mmddyyy.csv" | awk -F '_' 'NF{NF-=1};1'
first second third
NF是一個變量,包含一行中的字段數。
NF-= 1從NF變量減去一個,除去最後一個字段
你可以用shell parameter expansion:
while read -r line; do echo "${line%_*}"; done < file
# ...........................^^^^^^^^^^
感謝Sir..It的工作 – smisra3
@ smisra3,很高興它工作您。我發現你從來沒有接受任何已經回答的問題的答案。既然你是新來的,如果你的問題已經解決了,請不要忘記標記答案。您可以點擊答案旁邊的複選標記將其從空心切換爲綠色。如果您有任何疑問,請參閱[幫助中心](http://stackoverflow.com/helpcenter/someone-answers)。 – sat