脚本shell:复制文件中的部分行并将其放在开头

时间:2014-09-26 09:48:24

标签: linux shell sed

我有一个类似的文件

blabla1/blabla2/blabla3.ex
blabla4/blabla5/blabla6.ex
blabla7/blabla8/blabla9.ex

并且使用脚本shell linux,我想将其更改为

blabla3 : blabla1/blabla2/blabla3.ex
blabla6 : blabla4/blabla5/blabla6.ex
blabla9 : blabla7/blabla8/blabla9.ex

我没有用sed命令成功。我的问题是复制每行开头的行中存在的文本。

有人有解决方案吗?感谢

3 个答案:

答案 0 :(得分:4)

awk喜欢这些东西:

$ awk -F[/.] '{print $(NF-1),$0}' OFS=" : " file
blabla3 : blabla1/blabla2/blabla3.ex
blabla6 : blabla4/blabla5/blabla6.ex
blabla9 : blabla7/blabla8/blabla9.ex

解释

  • -F[/.]将字段分隔符设置为/.
  • print $(NF-1),$0打印倒数第二个字段,然后打印整行。
  • OFS=" : "将输出字段分隔符设置为空格+ : +空格。

答案 1 :(得分:1)

您可以使用此sed

sed 's#^.*/\([^/]*\).ex#\1 : &#' yourfile

答案 2 :(得分:0)

为了好玩:

paste file file|sed 's@^\S*/@@;s/\.[^.]*\s/ : /'