bash - 如果值或两个连续的行与列不匹配,如何打印分隔符

标签 bash awk

我有如下输入,如果两行之间第三列的值不同,我需要在行之间放置一个分隔符。

one two three four
five six three seven
eight nine ten elevel
alpha beta ten gama
tango charlie oscar bla

预期结果:

one two three four
five six three seven
=
eight nine ten elevel
alpha beta ten gama
=
tango charlie oscar bla

这是我认为可行的方法,但实际上不行。

awk '{col3=$3;next} $3!=col3{$0="\n="$0;print $0}' input

最佳答案

$ 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

关于bash - 如果值或两个连续的行与列不匹配,如何打印分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48522125/

相关文章:

bash - 按行号和列号子集文件

linux - 删除 awk printf/print 之间的空格分隔符

linux - bash 文件设置变量为纪元时间

bash - Unix - 根据列值随机选择行

awk - 用于 UTF-16 二进制文件的 grep 和 tail -f - 尝试使用简单的 awk

regex - 按文本文件中的特定模式对行和列重新排序

Bash:使用变量作为数组名称

bash - 在 bash 中,使用 &(& 符号)作为后台进程不起作用

linux - 使用 awk 和 sed 从 STDIN 重新格式化并执行

linux - 可以让 awk 使用 `exit 2` 退出 bash 脚本吗?