如何重复一个模式并使用sed“tab”进行修改

时间:2013-02-11 15:07:41

标签: sed

我的输入看起来像是由制表符分隔):

Yadda yaddabla            blubb_1234          extremlylongtext, with commata
awesomo sappa             dwarf_775           extremlylongbutdifferenttext, with commata

输出应为:

Yadda yaddabla S23            blubb_1234      1234      extremlylongtext, with commata
awesomo sappa y5            dwarf_775       775       extremlylongbutdifferenttext, with commata

所以我想在一个用制表符分隔的“_”字符后只重复数字。有什么建议? :)

2 个答案:

答案 0 :(得分:1)

sed 's/_\([[:digit:]]\{1,\}\)/_\1\t\1/g'

我用\t显示了这一点,表明输出中有一个标签。如果你没有使用GNU sed,你可能需要用文字标签替换它。

答案 1 :(得分:0)

选项卡分隔文件的awk解决方案

awk -F"\t" 'BEGIN{OFS="\t";}{$2 = gensub(/_([0-9]+)/,"_\\1\t\\1","g",$2);}1' temp.txt