如何在bash脚本上获取这个子字符串?

glo*_*iza 4 string shell-script text-formatting

我正在处理 bash 脚本。

我有一个带有字符串的 var。这是字符串:

tSA_15_20161014_11-12-50

基本上格式是 tSA_(id)_(year)(month)(day)_(hour)-(min)-(seg)

重要信息:

  • id 可以是 0 到 999 之间的数字
  • 年份格式为yyyy
  • 月份格式mm
  • 日期格式dd
  • 小时格式24h

我想得到的字符串是这样的:

20161014111250

这是yyyymmddHHMMSS

英语不是我的母语,所以如果你有什么不明白的地方请告诉我。谢谢你。

hee*_*ayl 12

bash参数扩展:

$ var='tSA_15_20161014_11-12-50'

$ var="${var#*_}"  ## Extracts the portion after first `_` i.e. 
                      new `var` will be `15_20161014_11-12-50`

$ var="${var#*_}"  ## again gets the portion after first `_`, so in this case
                      after operation `var` will contain `20161014_11-12-50`

$ echo "${var//[-_]/}"  ## Replaces all `-` and `_` from `$var` with null
20161014111250
Run Code Online (Sandbox Code Playgroud)

  • 我更喜欢这个答案,因为您提供了 OP 指定的纯 bash 解决方案。 (2认同)

deb*_*bal 8

echo "tSA_15_20161014_11-12-50" | awk -F'_' '{print $3$4}' | tr -d -
Run Code Online (Sandbox Code Playgroud)

echo 存储字符串的 var

解释:

awk -F'_' '{print $3$4}'将字段分隔符更改为_并打印第 3 和第 4 列

输出是 2016101411-12-50

tr -d --从之前的结果中删除。