在第6个反斜杠后用sed向上移动一行

时间:2018-01-22 01:07:49

标签: sed

http://www.somesite/play/episodes/xyz/fred-episode-110
http://www.somesite/play/episodes/abc/simon-episode-266
http://www.somesite/play/episodes/qwe/mum-episode-39
http://www.somesite/play/episodes/zxc/dad-episode-41
http://www.somesite/play/episodes/asd/bob-episode-57

我有很多网址保存在上面显示的txt文件中我希望在第6个反斜杠后用sed脚本移动一行

第6个反斜杠之后的txt是标题并且总是不同我需要选择标题以便我可以播放它

所以我需要它看起来像这样

fred-episode-110
http://www.somesite/play/episodes/xyz/fred-episode-110
simon-episode-266
http://www.somesite/play/episodes/abc/simon-episode-266
mum-episode-39
http://www.somesite/play/episodes/qwe/mum-episode-39
dad-episode-41
http://www.somesite/play/episodes/zxc/dad-episode-41
bob-episode-57
http://www.somesite/play/episodes/asd/bob-episode-57

仅使用sed

我可以用awk做到这一点,但我想用sed

做到这一点

2 个答案:

答案 0 :(得分:2)

您可以使用以下sed命令:

sed 'h;s@\([^/]*/\)\{6\}@@;p;x;' sed_test.txt

关于您的输入:

enter image description here

<强>说明:

  • h;将模式缓冲区复制到保留缓冲区
  • s@\([^/]*/\)\{6\}@@;删除,直到第6个/模式缓冲区的内容
  • p;打印模式缓冲区
  • x交换模式缓冲区并保留缓冲区内容
  • 然后执行默认操作 - &gt;打印模式缓冲区的内容

答案 1 :(得分:1)

你也可以使用这个

sed -E 's|(.*/)(.*)|\2\n&|' infile