我如何删除我的字符串的一部分并将其附加在后面(shell)

时间:2015-07-09 11:57:14

标签: bash shell

我正在尝试开发一个bash shell脚本。

我的要求是我有一个文件

ABC-123

XY2Z-234

我希望这是我文件的输出

ABC-123_ABC

XY2Z-234_XY2Z

我怎样才能实现这个目标?

2 个答案:

答案 0 :(得分:1)

您可以使用sed,

sed 's/^\([^-]*\).*/&_\1/' file

答案 1 :(得分:0)

使用Bash Parameter Expansion

s="ABC-123"
echo "${s}_${s%-*}"

输出:

ABC-123_ABC

${s%-*}中,-*中的模式$s匹配(来自结束/右侧的最短匹配)并删除以生成ABC

另一种方式是:

echo "${s}_${s/-*/}"

第一次出现的模式-*$s匹配(左起),并替换为空字符串(删除)以生成ABC