如何在shell脚本中的最后一个下划线之前提取值

时间:2016-11-04 06:46:15

标签: linux shell unix

我需要在shell脚本中的最后一个下划线之前提取值。

示例:

Input:   first_second_third_mmddyyy.csv
Output: first_second_third

Input: first_second_mmddyy.csv
Output: first_second

3 个答案:

答案 0 :(得分:5)

您可以使用此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

答案 1 :(得分:1)

您可以使用shell parameter expansion

while read -r line; do echo "${line%_*}"; done < file
# ...........................^^^^^^^^^^

答案 2 :(得分:0)

你也可以使用awk或cut如下;

$('#ReviewBox span:contains("By:")').each(function(){

    $(this).html($(this).html().split(/[/(\)]/g).join(""));

});

例如

awk -F '_' 'NF{NF-=1};1' file

echo "first_second_third_mmddyyy.csv" | rev | cut -d '_' -f2- | rev

NF是一个包含一行中字段数的变量。

NF- = 1从NF变量中减去1,以删除最后一个字段