我有以下bash脚本
#!/bin/bash
STR1=/home/ubuntu/foo/hicpro_data/output/3333_XX501621_0368_AH2BHTBGX9/CTCF
STR2=/home/ubuntu/foo/hicpro_data/output/3333_XX501621_0368_AH2BHTBGX9/K4me3
我想要做的是删除$STR1
和$STR2
中以/
分隔的最后一个元素,并在该bash脚本中执行。
输入
/home/ubuntu/foo/hicpro_data/output/3333_XX501621_0368_AH2BHTBGX9/
对$STR1
和$STR2
都并将其分配给新变量,例如NW_STR1
。
我该如何实现?
答案 0 :(得分:4)
只需使用dirname
:
$ dirname /home/ubuntu/foo/hicpro_data/output/3333_XX501621_0368_AH2BHTBGX9/K4me3
/home/ubuntu/foo/hicpro_data/output/3333_XX501621_0368_AH2BHTBGX9
答案 1 :(得分:2)
解决方案第一: :如果您有GNU awk
,请尝试执行以下操作。
echo "$STR2" | awk 'BEGIN{FS=OFS="/"}NF--'
解决方案2nd: 或使用纯BASH的参数扩展(在这里提到的所有解决方案中可能都是BEST解决方案)。
echo "${STR2%/*}"
/home/ubuntu/foo/hicpro_data/output/3333_XX501621_0368_AH2BHTBGX9
解决方案三: 使用awk
匹配。
echo "$STR2" | awk 'match($0,/\/.*\//){print substr($0,RSTART,RLENGTH-1)}'
解决方案4: :使用sub
程序的awk
。
echo "$STR2" | awk '{sub(/\/[[:alnum:]]+$/,"")} 1'