我正在尝试学习sed,但在尝试替换第三个单词时陷入困境。我在想上面的代码,但是没有用。 另外,如果使用sed将单词用“:”分隔,是否有任何分割行的方法?
rte_eth_dev_set_vlan_offload ,
rte_eth_dev_vlan_filter
DPDK - 18.08
RHEL - 7.6
Driver - igb_uio
答案 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