嘿,所以我在 bash 中有一个名为
的字符串chicken.fasta.count.sorted.topthree.txt
这是一个由点分隔的字符串,我想要第一个点之前的值。
我只想要子字符串“chicken”,我想将其存储在变量中。
有人可以给我指路吗?
s="$chicken.fasta.count.sorted.topthree.txt"
animal_name="${s%.*}
也许使用cut命令:
echo "chicken.fasta.count.sorted.topthree.txt" | cut -d '.' -f 1
使用以下 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 正则表达式快速入门