bash在第二个下划线后提取和存储

时间:2017-03-14 16:30:07

标签: bash

我尝试使用bash在第二个_之后提取并将其存储在变量pref中。我使用的是loop,因此以下内容并不完全准确,但文件结构/格式为。

我可以使用_ _`在第一个pref=${bname%%_*}, but can't seem to change it to the second之前提取evertything。谢谢你:)。

中提取的文件
00-0000_Last-First_base_counts_FBN1.txt

所需的输出

00-0000_Last-First

的bash

 pref=${bname%%_}; pref=${bname%%_*.txt}

3 个答案:

答案 0 :(得分:3)

$.ajax({ type: "POST", url: "https://vq3rsgkd94.execute-api.us-east-1.amazonaws.com/deploy", data: JSON.stringify({ "stage": "search", "fields": ["first_name", "last_name", "graduation_year"], "query": { "first_name": "Bob" } }), success: function(response) { response = JSON.parse(response); console.log(response); } }); cut一起作为分隔符获取第1和第2个字段:

_

存储在变量中:

s='00-0000_Last-First_base_counts_FBN1.txt'
cut -d_ -f1-2 <<< "$s"

00-0000_Last-First

答案 1 :(得分:1)

GNU

$ sed -r 's/([^_]+_[^_]*).*/\1/' <<<"00-0000_Last-First_base_counts_FBN1.txt"
00-0000_Last-First

$ sed 's/_[^_]*//2g' <<< "00-0000_Last-First_base_counts_FBN1.txt"
00-0000_Last-First

$ grep -o "^[^_]*_\?[^_]*" <<<"00-0000_Last-First_base_counts_FBN1.txt"
00-0000_Last-First

存储在变量

somevar="00-0000_Last-First_base_counts_FBN1.txt";
pref=$(sed 's/_[^_]*//2g' <<< "$somevar")

答案 2 :(得分:1)

sedawkcut一样,您可以使用expr实现此目的:

 $ filename=00-0000_Last-First_base_counts_FBN1.txt
 $ echo $(expr match "$filename" '^\([^_]*_[^_]*\)')
 00-0000_Last-First

这是在正则表达式的\(\)中回显捕获组。