使用sed将模式移动到行的开头

时间:2015-11-05 07:20:07

标签: regex bash sed

如何将模式移动到行的开头?

1702,1833,09C4,098C:325F|Sky|sportdigital|TV|Sky sonstige

应该是

325F:1702,1833,09C4,098C|Sky|sportdigital|TV|Sky sonstige

我发现当我找到模式时,我可以在开头插入一个字符或一个单词。但我不会让它移动我的搜索模式...

sed -r '/(:325F)/ s/^/#/'

当我的模式“:325F”被找到时,这会在开头添加一个“#”。

当我这样做时:sed -r '/(:325F)/ s/^/\1/'它给了我一个错误...... 有没有什么提示让我朝着正确的方向前进?

BR 克里斯

1 个答案:

答案 0 :(得分:2)

您可以直接在sed中使用查找和替换。

sed 's/^\([^:]*\):\([^|]*\)/\2:\1/' file

示例:

$ echo '1702,1833,09C4,098C:325F|Sky|sportdigital|TV|Sky sonstige' | sed 's/^\([^:]*\):\([^|]*\)/\2:\1/'
325F:1702,1833,09C4,098C|Sky|sportdigital|TV|Sky sonstige
$ echo '1702,1833,09C4,098C:325F|Sky|sportdigital|TV|Sky sonstige' | sed 's/^\([^:]*\):325F/325F:\1/'
325F:1702,1833,09C4,098C|Sky|sportdigital|TV|Sky sonstige