【问题标题】:How to reverse all words in line with sed? [duplicate]如何反转所有符合sed的单词? [复制]
【发布时间】:2018-07-20 12:26:52
【问题描述】:

例如,我们有:

This is the song that doesn`t end

什么 sed 命令会把它变成这个?

end doesn`t that song the is This

我只发现了如何反转文件中的行(又名tac):

sed -n '1!G;h;$p'

【问题讨论】:

  • 您为什么认为 sed 是一个合理的选择? sed 用于s/old/new/,仅此而已。
  • 你可以调整 this sed script 来交换单词而不是字符,但这几乎肯定会是一个脆弱的、难以理解的混乱。

标签: sed reverse word


【解决方案1】:

这可能对你有用(GNU sed):

sed -r 'G;:a;s/^(\S+)(\s*)(.*\n)/\3\2\1/;ta;s/\n//' file

添加换行符作为分隔符。将当前行一分为三,并按顺序在第一个单词、后面的空格和换行符后面的行的其余部分之前添加。迭代直到模式匹配失败,然后删除引入的换行符。

【讨论】:

    【解决方案2】:

    您能否尝试关注一下,如果这对您有帮助,请告诉我。

    awk '{for(i=NF;i>0;i--){printf("%s%s",$i,(i>1?OFS:ORS))}}'  Input_file
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-23
      • 2013-10-21
      • 2011-10-11
      相关资源
      最近更新 更多