在bash中剪切字符串的第一部分和最后一部分

在bash中剪切字符串的第一部分和最后一部分,bash,cut,awk,sed,Bash,Cut,Awk,Sed,我有一个字符串具有以下格式: aa_bb_cc_dd aa_bb_cc_dd_ee_ff 我想获得: bb_cc bb_cc_dd_ee 我尝试过“剪切”,但未能获得我想要的。使用: 解释 sed-e用于执行多个命令 's/^[^\u]*\u/'从开始到开始删除\u 's/[^\u]*$/'从最后一个\uu删除到行尾 带有: 解释 sed-e用于执行多个命令 's/^[^\u]*\u/'从开始到开始删除\u 's/[^\u]*$/'从最后一个\uu删除到行尾 使用bash时,可以使用内置

我有一个字符串具有以下格式:

aa_bb_cc_dd
aa_bb_cc_dd_ee_ff
我想获得:

bb_cc
bb_cc_dd_ee
我尝试过“剪切”,但未能获得我想要的。

使用:

解释
  • sed-e
    用于执行多个命令
  • 's/^[^\u]*\u/'
    从开始到开始删除
    \u
  • 's/[^\u]*$/'
    从最后一个
    \uu
    删除到行尾
带有:

解释
  • sed-e
    用于执行多个命令
  • 's/^[^\u]*\u/'
    从开始到开始删除
    \u
  • 's/[^\u]*$/'
    从最后一个
    \uu
    删除到行尾

使用
bash
时,可以使用内置程序执行此任务:

strip_headtail() {
 local s=$1
 ## strip the head
 s=${s#*_}
 ## strip the tail
 s=${s%_*}

 echo ${s}
}

strip_headtail aa_bb_cc_dd
strip_headtail aa_bb_cc_dd_ee_ff
您可能希望查看bash手册(
manbash
)以了解有关此方面的更多信息。
搜索删除匹配的前缀模式resp。删除匹配的后缀模式。

使用
bash
时,可以使用内置程序执行此任务:

strip_headtail() {
 local s=$1
 ## strip the head
 s=${s#*_}
 ## strip the tail
 s=${s%_*}

 echo ${s}
}

strip_headtail aa_bb_cc_dd
strip_headtail aa_bb_cc_dd_ee_ff
您可能希望查看bash手册(
manbash
)以了解有关此方面的更多信息。
搜索删除匹配的前缀模式resp。删除匹配的后缀模式。

我认为粘贴大型文档部分是垃圾邮件。推荐信就足够了。谢谢你的帮助。@Alfe谢谢你的提示。它总是一个问题,什么“大”意味着……无论如何,我用更简洁的东西代替它……如果你想对引用的文本的具体细节发表评论,那么引用它是有意义的,但是如果它只是一种类似的东西,我更喜欢你现在选择的方式:-我认为把大量的文档部分粘贴为垃圾邮件。推荐信就足够了。谢谢你的帮助。@Alfe谢谢你的提示。“大”是什么意思一直是个问题……无论如何,我用更简洁的词来代替它……如果你想对引用的文本的某个具体细节发表评论,引用这样的片段是有意义的,但如果它只是一个see-all类型的东西,我更喜欢你现在选择的方式:-)
strip_headtail() {
 local s=$1
 ## strip the head
 s=${s#*_}
 ## strip the tail
 s=${s%_*}

 echo ${s}
}

strip_headtail aa_bb_cc_dd
strip_headtail aa_bb_cc_dd_ee_ff