【问题标题】:Regular expression to replace a word with another word on the different line unix [closed]正则表达式用不同行unix上的另一个单词替换一个单词[关闭]
【发布时间】:2013-07-22 00:05:45
【问题描述】:

设A,B,C,D,E,F是单词

输入文件

A "\t" B

C "\t" D

E "\t" F

等等……

输出文件:

B "\t" C

D "\t" E

F "\t" etc...

在同一行将单词 A 替换为单词 B,并将下一行中的单词 B 替换为单词 C。 其他行也一样。

有任何 sed/awk/perl oneliner 来完成这个吗?

【问题讨论】:

  • 你用什么代替 F? G?一个?

标签: perl unix printing sed awk


【解决方案1】:

awk 不带正则表达式的一种方式:

awk '
BEGIN { FS=OFS="\t" } 
NR==1 { last=$NF; next }
      { last=last FS $1; print last; last=$NF}
END   { print $NF }' file

【讨论】:

    【解决方案2】:

    这是 bash 的一种方式

    $ cat f
    A   B
    C   D
    E   F
    
    $ words=( $(<f) )
    
    $ unset 'words[0]'
    
    $ printf "%s\t%s\n" "${words[@]}"
    B   C
    D   E
    F   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多