如何使用sed修改字符串

如何使用sed修改字符串

我有一个字符串,它是输入字符串,./y1563/y1563.xls想将其转换为字符串输出y1563/y1563.txt

答案1

您通常不会用来sed修改已有的字符串(根据你的评论) 在 shell 变量中。至少如果您只想删除和/或替换字符串的后缀,则不是。

反而,

NAME=./y1563/y1563.xls
NAME=${NAME%.xls}.txt    # remove .xls suffix, append .txt suffix
NAME=${NAME#./}          # remove ./ prefix (this may not be needed)

这些 (${variable%pattern}${variable#pattern}) 是标准变量替换从变量值中删除后缀和前缀字符串。

即使该$NAME值包含嵌入的换行符,这也可以正常工作。文件名中允许使用换行符,但由于sed是面向行的编辑器,因此它无法正确处理此类输入。

相关内容