Lunix下,用shell脚本提取两个文本中的数字,并进行排序,生成新的文档

Lunix下,用shell脚本提取两个文本中的数字,并进行排序,生成新的文档,第1张

sed

-e

's/[^0-9]/\n/g'

name1.txt

|

sort

>

new.txt

PS:其中name.txt是你的圆坦文件名,new.txt是新生成的文档。

这个命令会把源文档中所有数字摘出来然后排序。

同事处理冲旅两个文档的话sed没试过,不过你可以再加两行代码如下:

sed

-e

's/橘判桐[^0-9]/\n/g'

name2.txt

|

sort

>>

new.txt

sort

new.txt

>final.txt

先以a.txt为例:

awk -v RS="" '{ 

n = split($0,a,"《[^》]+》")

for(i=2i<ni+=2)

    print "《keywords》"a[i]"《/keywords》" 

}' a.txt >>./newfile/a.txt

这样就行了。

为了可读性,我将一条awk语句写成了多行。

实际测试结果如下:

解说:

RS=""

将awk的记录分隔符设置为空(默认是换行符),即将整个a.txt文本看做一条记录。

n = split($0,a,"《[^》]+》")

以正则"《[^》]+》"匹配的内容作为分隔符,对文本内容进行分割并将分割结果存入数组a,分割出的数目(数组大小)即为split函数的返回值n。这里暂且不对该正则做烂誉过多解释,否则喧宾夺主,有需要请追问,我再补充。

for(i=2i<ni+=2)

    print "《keywords》"a[i]"《/keywords》"

打印数组下标为偶数的元素并在首尾饥戚段分别加上关键字标记以还原。数组下标从1开始。

其他文件可作相同处理。如果文件较多,你可以搞个循环去做。这个应仔誉该不难。

楼主可以用cut命镇念并令实现。

我先编辑了两个文件a,b,内容如下

aaa:bbb:ccc

ddd:eee:fff

b文件内容如下:

AAA:BBB:CCC

DDD:EEE:FFF

如果想把a,b中第1,3字段提取出来输出到c文件中,则可这样实现:

cat a b | cut -d ':' -f 1,3 >c

(解释:-d 后接分隔符,御迹这里为冒号,也可以为其他的,看你的具体文件; -f 依据-d分隔符将得到的数个字段的第几字段提取出来,这里是提取第1,3字段)

运行结果:(c文件里的内容)

aaa:ccc

ddd:fff

AAA:CCC

DDD:FFF

当然这里有一个限制就是要好统一的分隔符“:”,这是这个命令的不足之处。

肯定还会有其他好的方法,不过高和我目前就只知道这么多了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12152835.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存