如何通过awk将两条连续的线连接在一起

时间:2019-02-15 11:31:50

标签: awk

我有一个带有数字的文本文件,我听到了一部分声音:

4194369
4194376
4194383
4194377
4194389
4194394
4194399
4194395
4194402
4194403
4194407

我想将文件中的两个连续数字连接在一起,以下代码为我完成了工作,除了不打印最后一行,代码的输出为:

awk '{printf $0 (NR%2?",":"\n")}' file.txt
4194369,4194376
4194383,4194377
4194389,4194394
4194399,4194395
4194402,4194403

我想得到这个作为输出:

4194369,4194376
4194383,4194377
4194389,4194394
4194399,4194395
4194402,4194403
4194407

4 个答案:

答案 0 :(得分:3)

是时候使用新工具了! // if you want the item with data-id=2 document.querySelector("[data-id='2']") 非常适合

pr

答案 1 :(得分:2)

const app = require('express')();
const server = require('http').createServer(app);
const io = require('socket.io')(server);
io.on('connection', () => { 
  console.log("new connection");
 });
server.listen(`3000`, () => {
  console.log(`Server is running on port 3000`);
});

答案 2 :(得分:2)

是时候使用旧工具了! paste非常适合

$ paste -sd',\n' file
4194369,4194376
4194383,4194377
4194389,4194394
4194399,4194395
4194402,4194403
4194407

您的awk也可以写为:

awk '(NR%2){printf "%s",$0; next}{print ","$0}END{if(NR%2) print ""}'

答案 3 :(得分:1)

请您尝试以下。

xargs -n 2 < Input_file  | tr -s ' ' ','

输出如下。

4194369,4194376
4194383,4194377
4194389,4194394
4194399,4194395
4194402,4194403
4194407


编辑: ,如下所述尝试纠正您在awk中的尝试。

awk 'FNR%2==0{print val","$0;val="";next} {val=val?val OFS $0:$0} END{if(val != ""){print val}}'  Input_file

您的方法出了什么问题,您没有检查下一行的值(是否存在下一行),因此这就是如果您的Input_file的行数为ODD的原因,它将打印未设置的逗号(,)发生。