我有一个字符串replenishment_category string,Date string
,我想删除以Date
开头的所有内容(包括它),如果它存在则还要删除前面的逗号。
我将要替换的字符串存储在变量中:
PARTITION_COLUMN='Date'
我尝试sed
替换变量PARTITION_COLUMN
echo "replenishment_category string,Date string" | sed "s/"$PARTITION_COLUMN".* //g"
但输出仍然具有日期之后的字符串:
replenishment_category string,string
如何删除string
部分以及Date
之前的逗号?
答案 0 :(得分:1)
试试这个:
echo "replenishment_category string,Date string" | sed "s/$PARTITION_COLUMN.*//"
注意.*
之后删除的空格以及整个命令的双引号。
答案 1 :(得分:0)
由于您要删除之前的变量和逗号,因此sed
可能会对您有帮助。
echo "replenishment_category string,Date string" | sed "s/,$PARTITION_COLUMN.*//g"
答案 2 :(得分:0)
sed
显然可以在这里工作:
echo "replenishment_category string,Date string" | sed "s/\b,$PARTITION_COLUMN.*//"
输出:
replenishment_category string
答案 3 :(得分:0)
您可以单独使用shell参数扩展,假设您已启用扩展globs(char
):
shopt -s extglob
$ var='replenishment_category string,Date string'
$ part_column=Date
$ echo "${var%%?(,)"$part_column"*}"
replenishment_category string
扩展无需扩展全局,并从${word%%pattern}
的末尾删除 pattern
的最长匹配。$word
扩展模式匹配零次或一次出现 ?(pattern)
,用于删除逗号(如果存在)。pattern
匹配以"$part_column"*
扩展名开头的任何字符串。在示例中不需要引用它,但是防止glob字符扩展的良好做法。