===关键词.txt===
芒硝-化工生产,硫化钠-化工生产
建筑史-研究-中国-近代-文集,建筑物-保护-中国-近代-文集
高等学校-课程改革-湖北省-文集,高等学校-课程建设-湖北省-文集
利用shell的相关命令,可以用awk,按照“-”“,”“ ”分隔一行关键词,去除行内重复关键词,得到
===去除重复后.txt===
芒硝,硫化钠,化工生产
建筑史,研究,中国,近代,文集,建筑物,保护
高等学校,课程改革,湖北省,文集,课程建设
提示:行内关键词顺序,不重要
谢谢。
以此例测试通过。
关于awk二维数组的使用:
awk的多维数组在本质上是一维数组,更确切一点,awk在存储上并不支持多维数组。awk提供了逻辑上模拟二维数组的访问方式。例如,array[2,4] = 1这样的访问是允许的。awk使用一个特殊的字符串SUBSEP (\034)作为分割字段,在上面的例子中,关联数组array存储的键值实际上是2\0344。
类似一维数组的成员测试,多维数组可以使用 if ( (i,j) in array)这样的语法,但是下标必须放置在圆括号中。
类似一维数组的循环访问,多维数组使用 for ( item in array )这样的语法遍历数组。与一维数组不同的是,多维数组必须使用split()函数来访问单独的下标分量。split ( item, subscr, SUBSEP)。
执行结果,有乱码。
==========================
�工生产 �钠 硫� 芒硝 �
近代 保护 中国 文集 建筑史 建筑物 研究
高等学校 �省 湖� 文集 课程改革 课程建设
你是windows上编辑的文件吧,要用awk,需要先用dos2unix转为unix格式。
我做测试时是在linux下直接用vim创建的《关键词.txt》文件。
dos2unix 关键词.txt然后再用awk。
我都是在Ubuntu下执行的,一直乱码。检查了“关键词.txt”是unix回车符0a,utf8-nobomb编码
你那里运行正常的话,见私信告我吧
可能环境有差异,我是在Redhat Linux服务器上测试的。
天降异象于前。