use*_*491 2 bash shell scripting
对于文件中的每一行,我想在第四个破折号之前打印该行上的所有内容。
输入:
TCGA-HC-8216-10A-11D-A323-01
TCGA-J4-8200-10A-11D-A323-01
TCGA-EJ-A65E-10A-11D-A323-01
Run Code Online (Sandbox Code Playgroud)
我想在第四个破折号“-”上分割每一行
输出:
TCGA-HC-8216-10A
TCGA-J4-8200-10A
TCGA-EJ-A65E-10A
Run Code Online (Sandbox Code Playgroud)
我知道我可以像这样在每个破折号上分开:
#!/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
Run Code Online (Sandbox Code Playgroud)
但这会在每个破折号之间分割并打印字符串的每个部分。
使用 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
Run Code Online (Sandbox Code Playgroud)
您正在削减输入-d(一)到(四)的(定界符)-并返回-f(字段)1-4。