Linux 最好的方法是选取两列,并通过分组对数据进行重新排序
我运行了一个查询,数据得到如下输出:Linux 最好的方法是选取两列,并通过分组对数据进行重新排序,linux,bash,Linux,Bash,我运行了一个查询,数据得到如下输出: seta set1 setb set2 setb set3 setc set4 setd set5 setd set6 setd set7 我需要它最终看起来是这样的: seta set1 setb set2 set3 setc set4 setd set5 set6 set7 我想有点像一棵树。由于我的工作性质,我无法给出更详细的示例。类似的示例应该可以: #!/bin/bash first_word='' last_w
seta set1
setb set2
setb set3
setc set4
setd set5
setd set6
setd set7
我需要它最终看起来是这样的:
seta set1
setb set2
set3
setc set4
setd set5
set6
set7
我想有点像一棵树。由于我的工作性质,我无法给出更详细的示例。类似的示例应该可以:
#!/bin/bash
first_word=''
last_word=''
while read line ; do
first_word=`echo "$line" | sed 's/^\([^ ]\+\).*$/\1/'`
if [ "$first_word" == "$last_word" ] ; then
echo -n $first_word | tr "[:graph:]" " "
echo "$line" | sed 's/^[^ ]\+\(.*\)$/\1/'
else
echo $line
last_word="$first_word"
fi
done
您可以使用
awk
:
awk 'BEGIN{fmt="%-10s%s\n"}
$1==last{printf fmt," ",$2; next }
{printf fmt,$1,$2; last=$1}' file
seta set1
setb set2
set3
setc set4
setd set5
set6
set7
请避免“给我密码”的问题。而是显示您正在处理的脚本,并说明问题所在。也看到