对于我文件中的每一行,我都想在第四个破折号之前打印该行上的所有内容。
输入:

TCGA-HC-8216-10A-11D-A323-01
TCGA-J4-8200-10A-11D-A323-01
TCGA-EJ-A65E-10A-11D-A323-01

我想把第四个破折号上的每一行分开“-”
输出:
TCGA-HC-8216-10A
TCGA-J4-8200-10A
TCGA-EJ-A65E-10A

我知道我可以在每一次冲刺中都像这样分开:
#!/usr/bin/env bash

IN="TCGA-HC-8216-01A-11D-A323-01
TCGA-J4-8200-10A-11D-A323-01
TCGA-EJ-A65E-10A-11D-A323-01"

arr=$(echo $IN | tr "-" "\n")

for x in $arr
do
 echo "> [$x]"
done

但这会在每个破折号之间分割并打印字符串的每个部分。

最佳答案

使用cut

cut -d- -f1-4 <<'EOF'
TCGA-HC-8216-01A-11D-A323-01
TCGA-J4-8200-10A-11D-A323-01
TCGA-EJ-A65E-10A-11D-A323-01
EOF

您在-d-(分隔符)上剪切输入,并返回-f(字段)1-4,一到四。

关于bash - 如何在第n个定界符上分割字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31341800/

10-12 17:38