colrm&cut处理粘帖过来的代码中的行数

最近遇到一个麻烦的事情,有些代码需要从网上下载,但是对方给出的代码页只能连每行的行数一块给复制下来,如下面这种模式:

这样的代码复制过来肯定没法用的,好在Linux下有很多工具,而碰巧我还记得两个,于是就动手试试,首先说明一下用到的两个工具:colrm和cut:

colrm - column remove,顾名思义就是删除列,这个工具的用法如下

colrm [startcol] [endcol],亦即删除从sartcol开始到endcod结束的列,需要注意的是这个命令没有参数指定文件,只能通过 <file 重定向来输入内容

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

cut - cut,这就是它的全名,没有简写,它的作用是抽取指定的列,用法如下:

cut  -c list [file...] ,这是默认的方式,抽取文件file中list指定的列,指定方式可以用范围如1-3或者列数如1,4,7

cut -f list [-d delimiter] [-s] [file...],这是通过指定定界符delimiter将file分割为多个fields并抽取list指定的field,有点类似awk中域的概念,其实也就是域的概念,不过这次不用它

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

如上就是两个命令的简单用法,现在我们就实际测试一下效果,首先是colrm:

可以看到效果很好,就是我要的结果。但是这种方法有一个局限,就是删除列和需要的列要有对齐关,像这种 “右|左” 对齐方式,使用colrm就很方便处理,下面在看看cut的处理结果:

输出效果也还可以,最关键的还是删除的列和所需的列有对齐关系,否则上面两个工具都难以对付那种杂乱无章的内容。网上有人介绍可以通过awk来实现,我觉得理论上也应该可以,毕竟“行数”和代码之间是有空格分隔的,但是由于awk已经忘的差不多了,所以暂且不去实践。

上面这段代码部分是从ehci-hcd.c里面粘帖过来的,这是linux kernel srouce中usb/driver下面的一个文件,根据网站上的显示,它的内核代码好像是使用一个叫做LXR的工具管理的,不清楚这个工具怎么用,好像很多人都是通过这个来管理内核源码。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注