正则表达式用不同的行unix上的另一个单词替换单词

时间:2013-07-22 00:05:45

标签: perl unix printing sed awk

设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都能实现这个目标吗?

2 个答案:

答案 0 :(得分:1)

awk没有正则表达式的一种方式:

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

答案 1 :(得分:0)

这是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