我输入如下,如果两行之间的第三列的值不同,我需要在行之间放置一个分隔符.
one two three four
five six three seven
eight nine ten elevel
alpha beta ten gama
tango charlie oscar bla
Run Code Online (Sandbox Code Playgroud)
预期结果:
one two three four
five six three seven
=
eight nine ten elevel
alpha beta ten gama
=
tango charlie oscar bla
Run Code Online (Sandbox Code Playgroud)
这是我认为会起作用但不是.
awk '{col3=$3;next} $3!=col3{$0="\n="$0;print $0}' input
Run Code Online (Sandbox Code Playgroud)
$ awk '$3!=p && NR>1 { print "=" } { print; p=$3 }' file
one two three four
five six three seven
=
eight nine ten elevel
alpha beta ten gama
=
tango charlie oscar bla
Run Code Online (Sandbox Code Playgroud)
Awk补充詹姆斯答案的另一种变体(或者说是相同的?用不同的方式写成),
awk '{ if ($3 != old && NR>1) { print "=" } print; old = $3; }' file
Run Code Online (Sandbox Code Playgroud)
这个想法基本上是$3从每一行备份,基本上如果它在下一个打印中变化所需的字符串.这NR>1只是跳过第一行打印的条件.
$ awk 'p!=$3{if(NR>1)print "="; p=$3}1' file
one two three four
five six three seven
=
eight nine ten elevel
alpha beta ten gama
=
tango charlie oscar bla
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |