免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: whb_linux
打印 上一主题 下一主题

[文本处理] 这个问题应该用awk可以吧,请大虾帮忙 [复制链接]

论坛徽章:
3
金牛座
日期:2013-08-26 10:25:02摩羯座
日期:2013-09-09 15:14:322015年亚洲杯之约旦
日期:2015-05-06 09:33:56
11 [报告]
发表于 2015-05-15 15:19 |只看该作者

论坛徽章:
10
2015年亚洲杯之科威特
日期:2015-04-13 13:51:5315-16赛季CBA联赛之山东
日期:2016-01-16 18:35:0815-16赛季CBA联赛之广东
日期:2016-01-04 15:26:23程序设计版块每日发帖之星
日期:2015-11-13 06:20:002015亚冠之阿尔艾因
日期:2015-11-10 12:32:242015亚冠之阿尔沙巴布
日期:2015-05-15 18:26:49羊年新春福章
日期:2015-04-28 16:45:112015年亚洲杯之伊拉克
日期:2015-04-25 20:06:30羊年新春福章
日期:2015-04-13 13:53:2015-16赛季CBA联赛之八一
日期:2016-01-20 18:23:49
12 [报告]
发表于 2015-05-15 16:29 |只看该作者


论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
13 [报告]
发表于 2015-05-15 16:31 |只看该作者
这......只能说
神帖 神人 神回

论坛徽章:
0
14 [报告]
发表于 2015-05-19 07:09 |只看该作者
只会用笨办法。

cat test_file3
aaa ccc
bbb ccc
aaa xxx
xxx xxx
bbb ddd
kkk bbb
ccc xxx
ddd aaa
eee eee
aaa eee
eee qqq


-------------------

#set -xv

PATH=$PATH:~/bin

export PATH
declare -i row_cnt=$(cat test_file3 | wc -l)
declare -i id=1
declare -i k=1
declare -i q=0
declare -i r=0
declare -i l=0

cat /dev/null > tgt_file2
cat /dev/null > tgt_file4
temp_file=test_file3

for i in $(seq 1 $row_cnt)
do


cat tgt_file4 | head -n $q>tgt_file2

coli1=$(cat $temp_file | awk 'NR=='$i'{print $1}')
coli2=$(cat $temp_file | awk 'NR=='$i'{print $2}')
oidi=$(cat $temp_file | awk 'NR=='$i'{print $3}')

k=$k+1


for j in $(seq $k $row_cnt)
do

colj1=$(cat $temp_file | awk 'NR=='$j'{print $1}')
colj2=$(cat $temp_file | awk 'NR=='$j'{print $2}')
oidj=$(cat $temp_file | awk 'NR=='$j'{print $3}')

if [ "$oidj" == "" ];then

if [ $coli1 == $colj1 ] || [ $coli2 == $colj2 ];then

echo "$colj1 $colj2 $id">>tgt_file2


else
echo "$colj1 $colj2 $oidj">>tgt_file2
fi

else

echo "$colj1 $colj2 $oidj">>tgt_file2

if [[ $coli1 == $colj1 || $coli2 == $colj2 ]]&&[ "$oidi" == "" ];then

r=1

rc=$oidj

fi

fi
done

q=$q+1

if [ $r -eq 1 ];then

#id=$id+1

sed  -i "$q i $coli1 $coli2 $rc" tgt_file2

elif [ $i == 1 ];then

sed  -i "$q i $coli1 $coli2 $id" tgt_file2
elif [ "$oidi" != "" ];then

if  [ $i != $row_cnt ];then
sed  -i "$q i $coli1 $coli2 $oidi" tgt_file2
else echo "$coli1 $coli2 $oidi">>tgt_file2
fi
else
id=$id+1
sed  -i "$q i $coli1 $coli2 $id" tgt_file2


fi

r=0

cat tgt_file2 > tgt_file4

temp_file=tgt_file4


done



cat tgt_file4



-------------------------


aaa ccc 1
bbb ccc 1
aaa xxx 1
xxx xxx 1
bbb ddd 1
kkk bbb 2
ccc xxx 1
ddd aaa 3
eee eee 1
aaa eee 1
eee qqq 3

论坛徽章:
11
射手座
日期:2015-08-11 16:10:26辰龙
日期:2015-08-11 16:11:11黑曼巴
日期:2016-04-26 16:58:40
15 [报告]
发表于 2015-05-19 17:44 |只看该作者

长度不符合要求

论坛徽章:
11
射手座
日期:2015-08-11 16:10:26辰龙
日期:2015-08-11 16:11:11黑曼巴
日期:2016-04-26 16:58:40
16 [报告]
发表于 2015-05-19 18:09 |只看该作者
whb_linux 发表于 2015-05-15 12:34
因为aaa eee 归属为1 所以 eee eee 归属为1


总算猜到了。
期望数据结果
aaa ccc 1
ooo ccc 1
aaa xxx 1
eee xxx 1
iii ddd 2
uuu bbb 3
ooo xxx 1
uuu fff 3
eee kkk 1
aaa ppp 1

第3列的数值是通过前两列的是否有重复来判断,看数值2和3的两行,iii ddd uuu(两个3) bbb都只是出现一次。其他数值为1的,都是有重复值的,且相互关联。
以及楼主的第1楼不用参考,反而让自己更乱,楼主也说了,设备号和角色id值是不会相等的,但在一楼的举例就是误导大家了。

还有这个题我不会解,不会使用at功能,谁教教我。大神们回来解题吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP