对于我文件中的每一行,我都想在第四个破折号之前打印该行上的所有内容。
输入:
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/