在每行中将第一个单词替换为第三个单词,但单词之间用“:”分隔

时间:2019-03-25 19:01:29

标签: sed

我正在尝试学习sed,但在尝试替换第三个单词时陷入困境。我在想上面的代码,但是没有用。 另外,如果使用sed将单词用“:”分隔,是否有任何分割行的方法?

rte_eth_dev_set_vlan_offload ,
rte_eth_dev_vlan_filter

DPDK - 18.08
RHEL - 7.6
Driver - igb_uio

1 个答案:

答案 0 :(得分:2)

从下面的评论看来,您实际上是想将第三个单词替换为第一个单词,而不是相反。如果是这样,则:

$ echo 'first:second:third' | sed 's/\(\([^:]*\).*:\).*/\1\2/'
first:second:first

或者如果您要处理的字段很多:

$ echo 'first:second:third' | sed 's/\([^:]*\):\([^:]*\):\([^:]*\)/\1:\2:\1/'
first:second:first

但是您实际上应该将awk用于涉及字段的任何事情:

$ echo 'first:second:third' | awk 'BEGIN{FS=OFS=":"} {$3=$1} 1'
first:second:first