获取点分隔字符串的第一个值(Bash)

问题描述 投票:0回答:2

嘿,所以我在 bash 中有一个名为

的字符串

chicken.fasta.count.sorted.topthree.txt
这是一个由点分隔的字符串,我想要第一个点之前的值。

我只想要子字符串“chicken”,我想将其存储在变量中。

有人可以给我指路吗?

s="$chicken.fasta.count.sorted.topthree.txt"
animal_name="${s%.*}
linux string bash shell bioinformatics
2个回答
1
投票

也许使用cut命令:

echo "chicken.fasta.count.sorted.topthree.txt" | cut -d '.' -f 1


0
投票

使用以下 Perl 语句之一:

echo 'chicken.fasta.count.sorted.topthree.txt' | perl -lne 'print /([^.]*)/'

echo 'chicken.fasta.count.sorted.topthree.txt' | perl -F'[.]' -lane 'print $F[0]'

/([^.]*)/
:匹配任何非点字符 (
[^.]
) 重复 0 次或多次 (
*
) 的模式。该模式用括号捕获并传递给
print
,后者打印它。

Perl 单行代码使用这些命令行标志:

-e
:告诉 Perl 查找内联代码,而不是在文件中。
-n
:一次循环输入一行,默认将其分配给
$_

-l
:在内联执行代码之前删除输入行分隔符(默认情况下在 *NIX 上为
"\n"
),并在打印时附加它。
-a
:在空格或
$_
选项中指定的正则表达式上将
@F
拆分为数组
-F

-F'[.]'
:在文字点 (
@F
) 上拆分为
.
,而不是在空格上。

另请参阅:

perldoc perlrun
:如何执行Perl解释器:命令行开关
perldoc perlre
:Perl 正则表达式(regexes)

perldoc perlre
:Perl 正则表达式(regexes):量词;字符类和其他特殊转义;断言;捕获群组

perldoc perlrequick
:Perl 正则表达式快速入门

© www.soinside.com 2019 - 2024. All rights reserved.