Rak*_*dra 10 shell text-processing cut variable
我有一个变量集var='type_cardio_10-11-2017'
。我需要从变量中删除最后 10 个字母,并将剩余的值附加到var2
.
我尝试使用以下脚本,但没有按预期工作。
var=type_cardio_10-11-2017
var2=${var} | cut -f1 -d "_"
echo ${var2}
Run Code Online (Sandbox Code Playgroud)
我想要的输出是type_cardio。
Kus*_*nda 17
要从 last _
in之后删除所有内容var
并将结果分配给var2
:
var2=${var%_*}
Run Code Online (Sandbox Code Playgroud)
参数扩展从给定变量的值的末尾${parameter%word}
删除模式word
(_*
在本例中)。
POSIX 标准将此称为“删除最小后缀模式”参数扩展。
要删除最后一个下划线及其后的 10 个字符,请使用
var2=${var%_??????????}
Run Code Online (Sandbox Code Playgroud)
要删除与您的示例中的日期字符串相对应的字符,请使用
var2=${var%_[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]}
Run Code Online (Sandbox Code Playgroud)
您使用哪种模式取决于您希望如何仔细地执行匹配。
Jef*_*ler 12
您实际上想从字符串中删除尾随的11 个字符;这是另一种方法:
$ var=type_cardio_10-11-2017
$ var2=${var%???????????}
$ echo "$var2"
type_cardio
Run Code Online (Sandbox Code Playgroud)
另一种方法bash
:
echo "${var::-10}"
Run Code Online (Sandbox Code Playgroud)
或者在旧版本中:
echo "${var::${#var}-10}" #or
echo "${var: : -10}"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23808 次 |
最近记录: |