014-老男孩教育每日一题-将一个文本的奇数行和偶数行合并

科技资讯

 

  • 方法一:sed版本

N表示读取下一行,给sed处理,也就是sed同时处理2行。

 

  • 方法二:xargs初级版

有点玩赖了,每一行都是7列,那么两行在一起就是14列了。

  • 方法三:xargs升级版

xargs默认使用的是空格为分隔符,通过-d指定新的分隔符,这里修改为\n回车换行为分隔符。

-n2表示以回车为换行符后,我要每行显示两列,也就是两行。

相当于实现了合并奇偶行的作用。

  • 方法三:awk方法

getline是读取下一行的意思。

把当前行存放起来,放到lastline变量中。然后读取下一行,然后使用print lastline和$0显示上一行和当前行的内容。

  • 方法四:awk-getline升级版

awk中getline表示读取下一行。

同时他还有多种形式,getlinelastline ##表示,把下一行的内容放入变量lastline中。

然后通过printlastline,$0输出 #表示输出lastline的内容(上一行的内容)和​$0(当前行的内容)。

小缺点:

此方法会忽略文件的第一行。

  • 方法五:paste-sd参数

说明:

paste平时主要用于合并两个文件的内容。

这里通过-s参数可以把一个或多个文件的内容,第一行连接上第二行,连接第三行,。。。。这样的形式放在一起。

组合成一行!注意加上-s后会把文件变为一行。

例子:

[

注意:cat -n是为了给结果加上个行号。

不难发现,结果就一行。这是-s参数的作用。

继续看-d参数

-d参数可以指定,paste输出的时候每一行以什么”结束”(或者叫分隔符)。

-d ” \n”表示第一行以空格结束,第二行以回车结束,第三行以空格结束,第四行以回车结束,等等。

  • 方法六

说明:

通过man paste不难发现,paste也支持 通过 – 来读取文件。

一个-减号简单可以理解为文件的一行。

paste -d ” ” – – <filename

表示

每次读取文件的两行,第一行的结束标记为空格。

  • 方法七:判断奇偶行并显示

单独判断奇偶行,如果是奇数行就显示内容,如果是偶数行显示内容但是不输出回车(printf实现)。

  • 方法八:判断奇偶行显示-升级版

三目运算符,相当于上面的ifelse的内容。

  • 方法九:awk判断方法

next表示结束处理当前行的内容,处理下一行。

注意如果执行了next后,后面{}的内容不会执行。

  • 方法十:awk内置变量方法

ORS表示输出记录分隔符。

output record separator

简单理解就是控制awk如何显示每行的,在每一行的结尾显示什么。

默认是回车。

这里通过后面的判断来实现了如果是奇数行每一行就以空格结束,如果是偶数行就以回车结束。

相当于下面的例子:

今天是老男孩教育每日一题陪伴大家的第14天。

对于题目和答案的任何疑问,请在博客评论区留言。

往期题目索引

https://www.drscrewdriver.com/100.html

继续阅读