打印该行,然后打印最后一个字两次

时间:2014-01-06 15:49:43

标签: bash sed

我有以下文件(F1):

if a equals b
you
three aggbc four

我希望输出为:

if a equals b b b
you you you
three aggbc four four four

我运行以下命令:

sed -re 's/.*([^ ]+)[ |$]/\0 \1 \1/' F1

但它不起作用。

我得到的输出是错误的:

if a equals  s sb
you
three aggbc  c cfour

我需要它作为sed命令。

3 个答案:

答案 0 :(得分:2)

sed -r 's/^(.* )?(.*)$/\1\2 \2 \2/' F1

答案 1 :(得分:0)

正则表达式特价在角色类中失去了特殊意义。所以[ |$]匹配单个字符,可以是空格,管道或美元符号。试试这个;

sed -re 's/.*([^ ]+) *$/& \1 \1/' F1

另请注意,我已将\0更改为&。我没有在\0中看到sed,但如果您支持{{1}},那么对您有更多的权力。

答案 2 :(得分:0)

如果你对学习awk感兴趣,那就是:

awk '{print $0 FS $NF FS $NF}' file

awk '{$NF=$NF FS $NF FS $NF}1' file 
相关问题