linux - 字符串分割并提取bash中的最后一个字段

标签 linux bash shell unix

我有一个文本文件FILENAME。我想在第一列字段的 - 处拆分字符串,并从每行中提取最后一个元素。这里 "$(echo $line | cut -d, -f1 | cut -d- -f4)"; 单独并没有给我正确的结果。

文件名:

TWEH-201902_Pau_EX_21-1195060301,15cef8a046fe449081d6fa061b5b45cb.final.cram
TWEH-201902_Pau_EX_22-1195060302,25037f17ba7143c78e4c5a475ee98e25.final.cram
TWEH-201902_Pau_T-1383-1195060311,267364a6767240afab2b646deec17a34.final.cram

我尝试过的代码:

while read line; do \
DNA="$(echo $line | cut -d, -f1 | cut -d- -f4)";
echo $DNA
done < ${FILENAME} 

我想要的结果

1195060301
1195060302
1195060311

最佳答案

请您尝试以下操作:

while IFS=, read -r f1 _; do    # set field separator to ",", assigns f1 to the 1st field and _ to the rest
    dna=${f1##*-}               # removes everything before the rightmost "-" from "$f1"
    echo "$dna"
done < "$FILENAME"

关于linux - 字符串分割并提取bash中的最后一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64672734/

相关文章:

Bash:ls 的子 shell 行为

mysql - 如何在 ubuntu 中使用脚本添加带有连字符的数据库名称

linux - 如何通过命令行在多个网络连接之间进行选择?

linux - 如何使用 MakeFile 运行没有 "./"的可执行文件?

linux - 减少程序的 sleep() 函数

Bash 脚本语句

linux - shell脚本单独列出目录中的文件名并重命名

bash - 寻找大文件的 uniq -c 替代品

linux - `set -x` 有什么作用?

c++ - 如何在 Linux 应用程序上使用 C++ 中的终端输入中断循环/进程