如何在bash脚本中使用Bash / Sed / Awk / Perl删除分隔字符串的最后一个元素[duplicate]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在bash脚本中使用Bash / Sed / Awk / Perl删除分隔字符串的最后一个元素[duplicate]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我有以下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
。我怎样才能做到这一点?
答案
解决方案1:如果您有GNU awk
,请尝试以下操作。
echo "$STR2" | awk 'BEGIN{FS=OFS="/"}NF--'
解决方案第二:或者使用纯BASH的参数扩展(可能是这里提到的最佳解决方案)。
echo "${STR2%/*}"
/home/ubuntu/foo/hicpro_data/output/3333_XX501621_0368_AH2BHTBGX9
解决方案3:使用awk
匹配。
echo "$STR2" | awk 'match($0,/\/.*\//){print substr($0,RSTART,RLENGTH-1)}'
解决方案4:使用sub
程序的awk
。
echo "$STR2" | awk '{sub(/\/[[:alnum:]]+$/,"")} 1'
另一答案
只需使用dirname
:
$ dirname /home/ubuntu/foo/hicpro_data/output/3333_XX501621_0368_AH2BHTBGX9/K4me3
/home/ubuntu/foo/hicpro_data/output/3333_XX501621_0368_AH2BHTBGX9
以上是关于如何在bash脚本中使用Bash / Sed / Awk / Perl删除分隔字符串的最后一个元素[duplicate]的主要内容,如果未能解决你的问题,请参考以下文章