Linux 在第一列值的每次重复上放置符号
Hii专家我有一个如下所示的输入文件,其中第一列值在一段时间后重复,现在我想用symbol>分隔重复的块Linux 在第一列值的每次重复上放置符号,linux,bash,shell,for-loop,awk,Linux,Bash,Shell,For Loop,Awk,Hii专家我有一个如下所示的输入文件,其中第一列值在一段时间后重复,现在我想用symbol>分隔重复的块 0.0 0.0 0.50000E+00 5.0 0.0 0.80000E+00 10.0 0.0 0.80000E+00 0.0 1.0 0.10000E+00 5.0 1.0 0.90000E+00 10.0 1.0 0.30000E+00 0.0 2.0 0.90000E+00 5.0
0.0 0.0 0.50000E+00
5.0 0.0 0.80000E+00
10.0 0.0 0.80000E+00
0.0 1.0 0.10000E+00
5.0 1.0 0.90000E+00
10.0 1.0 0.30000E+00
0.0 2.0 0.90000E+00
5.0 2.0 0.50000E+00
10.0 2.0 0.60000E+00
现在我想在第一列值的每一个重复上加上>符号,这样我的输出应该是
> > >
0.0 0.0 0.50000E+00
5.0 0.0 0.80000E+00
10.0 0.0 0.80000E+00
> > >
0.0 1.0 0.10000E+00
5.0 1.0 0.90000E+00
10.0 1.0 0.30000E+00
> > >
0.0 2.0 0.90000E+00
5.0 2.0 0.50000E+00
10.0 2.0 0.60000E+00
我尝试了下面的脚本:但它只是读取文件
#!/bin/sh
for file in `cat file.txt`
do
sed '>' $file
done
检查第一个字段是否低于上一个记录
$ awk '!(p<$1){k=$0; gsub(/\S+/,">",k); print k} {p=$1}1' file | column -t
> > >
0.0 0.0 0.50000E+00
5.0 0.0 0.80000E+00
10.0 0.0 0.80000E+00
> > >
0.0 1.0 0.10000E+00
5.0 1.0 0.90000E+00
10.0 1.0 0.30000E+00
> > >
0.0 2.0 0.90000E+00
5.0 2.0 0.50000E+00
10.0 2.0 0.60000E+00
如果需要保留间距,则需要稍微不同的方法
$ sed '1~3i> > >' file | column -t
> > >
0.0 0.0 0.50000E+00
5.0 0.0 0.80000E+00
10.0 0.0 0.80000E+00
> > >
0.0 1.0 0.10000E+00
5.0 1.0 0.90000E+00
10.0 1.0 0.30000E+00
> > >
0.0 2.0 0.90000E+00
5.0 2.0 0.50000E+00
10.0 2.0 0.60000E+00