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



我有以下文件(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/.*([^ ]+)[ |$]/ 1 1/' F1

但它行不通。

我得到的输出是错误的:

if a equals  s sb
you
three aggbc  c cfour

我需要它作为sed命令。

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

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

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

另请注意,我将更改为&。我还没有在sed中看到,但如果你的支持,你会有更多的权力。

如果你有兴趣学习awk,这里是:

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

最新更新