用于从变量中删除最后七个字符的 Unix 脚本
Unix Script to remove last seven characters from a variable
需要从变量中删除最后七个字符。
例如,如果我的变量字符串是
COLUMN_NAME||','||
那么它应该输出 COLUMN_NAME
我试过下面的方法,但最后一个管道符号只被删除了
var=$(lastline%|)
var=$(lastline%|*)
结果:COLUMN_NAME||','|
老派方式
echo "COLUMN_NAME||','||" | rev|cut -c 8-|rev
所以你只是反转字符串,删除前 7
个字符,然后再次反转字符串。
使用 $variable
和 echo 来做同样的事情。
您也可以像下面这样使用 awk
,这样会更快。
awk '{print substr([=11=], 1, length([=11=])-7)}'
示例:
$ export variable1="COLUMN_NAME||','||"
$ echo $variable1|rev|cut -c 8-|rev
COLUMN_NAME
$ echo $variable1|awk '{print substr([=12=], 1, length([=12=])-7)}'
COLUMN_NAME
你需要使用两个%
来去除最长的匹配:
$ r="COLUMN_NAME||','||"
$ echo ${r%%|*}
COLUMN_NAME
正如 BashFAQ 在 Removing part of a string 中所说:
%
means "remove the shortest possible match from the end of the
variable's contents".
%%
means "remove the longest possible match from the end of the
variable's contents".
您可以从该点找到 string/s 和索引的长度:
str1="1234567890foobar";
strlen=${#str1};
str2=${str1:0:$strlen-7};
echo $str2;
要删除最后 7 个字符:
$ var="COLUMN_NAME||','||"
$ echo "${var%???????}"
COLUMN_NAME
要删除 第一个 管道之后的所有内容:
$ echo "${var%%|*}"
COLUMN_NAME
见https://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion
和 https://www.gnu.org/software/bash/manual/bashref.html#Pattern-Matching
需要从变量中删除最后七个字符。
例如,如果我的变量字符串是
COLUMN_NAME||','||
那么它应该输出 COLUMN_NAME
我试过下面的方法,但最后一个管道符号只被删除了
var=$(lastline%|)
var=$(lastline%|*)
结果:COLUMN_NAME||','|
老派方式
echo "COLUMN_NAME||','||" | rev|cut -c 8-|rev
所以你只是反转字符串,删除前 7
个字符,然后再次反转字符串。
使用 $variable
和 echo 来做同样的事情。
您也可以像下面这样使用 awk
,这样会更快。
awk '{print substr([=11=], 1, length([=11=])-7)}'
示例:
$ export variable1="COLUMN_NAME||','||"
$ echo $variable1|rev|cut -c 8-|rev
COLUMN_NAME
$ echo $variable1|awk '{print substr([=12=], 1, length([=12=])-7)}'
COLUMN_NAME
你需要使用两个%
来去除最长的匹配:
$ r="COLUMN_NAME||','||"
$ echo ${r%%|*}
COLUMN_NAME
正如 BashFAQ 在 Removing part of a string 中所说:
%
means "remove the shortest possible match from the end of the variable's contents".
%%
means "remove the longest possible match from the end of the variable's contents".
您可以从该点找到 string/s 和索引的长度:
str1="1234567890foobar";
strlen=${#str1};
str2=${str1:0:$strlen-7};
echo $str2;
要删除最后 7 个字符:
$ var="COLUMN_NAME||','||"
$ echo "${var%???????}"
COLUMN_NAME
要删除 第一个 管道之后的所有内容:
$ echo "${var%%|*}"
COLUMN_NAME
见https://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion
和 https://www.gnu.org/software/bash/manual/bashref.html#Pattern-Matching