linux awk 某一列合并,利用shell中awk和xargs以及sed将多行多列文本中某一列合并成一行...
一、问题描述
最近需要利用Shell将多行多列文本中某一列,通过指定的分隔符合并成一行。假设需要处理的文本如下:
我们主要处理的是,将用户名提取处理,合并成一行,并通过逗号进行分隔。最终的格式如下:
"li1","huan","wang","wu","78c","zh","liu","zhao","xu","yang"
二、解决方案
首先是提取每一行的第X列,我最先能够想到的是awk命令,如下:awk '{print $2}' user1.txt
接着,是不是可以把替换符替换为逗号呢?
使用tr命令awk '{print $2}' user1.txt |tr "\n" ","
看着好像是很接近,我们将上面的 ,分隔改为","分隔,是不是就okey了呢?命令如下:awk '{print $2}' user1.txt |tr "\n" "\",\""
只是很遗憾,执行效果如下:
为什么呢?
因为tr是单个字符处理工具,而不是字符串处理工具。
既然tr不可以替换字符串,那么咱们就用sed命令。因为sed命令不仅仅可以处理字符,还可以处理字符串。
先来个简单的,将换行替换成逗号,命令如下:awk '{print $2}' user1.txt |sed 's/\n/,/g'
执行结果如下:
好吧,竟然不听话。为什么呢?
因为sed命令处理过程是:从文本流中读取一行文本后,先把换行符去掉,然后进行相应的命令,处理完后再添加上换行符。这就导致sed命令,无法对换行符进行直接替换。
既然这样行不通,怎么搞呢?
解决方案一:
既然sed不能修改换行符,那就是在使用sed之前,把换行符干掉。干掉换行符,可以使用tr和xargs命令。#使用xargs命令干掉换行符
awk '{print $2}' user1.txt |xargs
#使用tr命令干掉换行符
awk '{print $2}' user1.txt |tr "\n" " "
使用sed命令将空格替换成",",命令如下:awk '{print $2}' user1.txt |xargs |sed 's/ /","/g'
但是开头和结尾少了一个双引号,解决方案如下:echo '"'`awk '{print $2}' user1.txt |xargs |sed 's/ /","/g'`'"'
解决方案二:echo '"'`awk '{print $2}' user1.txt | sed ':label;N;s/\n/","/;b label'`'"'
linux awk 某一列合并,利用shell中awk和xargs以及sed将多行多列文本中某一列合并成一行...相关推荐
- linux遍历目录删除指定文件,利用shell脚本遍历文件夹内所有的文件并作整理统计的方法-linux删除文件夹...
本篇文章扣丁学堂Linux培训小编给读者们分享一下利用shell脚本遍历文件夹内所有的文件并作整理统计的方法,文章具有很好的参考价值,感兴趣的小伙伴就随小编来了解一下吧. 环境: Ubuntu下采用s ...
- Linux从入门到精通系列之SHELL编程awk语法结构及案例解析
前言 AWK 是一种非常强大的文本分析工具.适合于文本处理和报表生成,它还有许多精心设计的特性,允许进行特殊技巧程序设计.对于短消息来说,比如处理话单文件,使用awk就非常方便. 一.awk介绍 1. ...
- Linux脚本输出99乘法表,利用shell脚本各种循环语句输出九九乘法表
SHELL语句主要包含三种:for循环语句.while循环语句.unitl循环语句. 这里分别使用这三种循环或者结合使用来实现九九乘法表.详细如下: 使用for循环实现: #!/bin/bash #f ...
- linux最全的命令大全,shell运维手册
1 文件{ ls -rtl # 按时间倒叙列出所有目录和文件 ll -rt touch file # 创建空白文件 ...
- shell脚本:删除文本中的字母、找单词、筛选,匹配,删除,替换
shell 有时候会用三剑客结合正则表达式来处理文本 sed cut行 awk列,对一行中的英文,数字筛选,匹配,删除,替换, 文章目录 删除文本中指定行的字母 输出一句英文中长度小于6的单词 根 ...
- excel隐藏了列数和行数_快速隐藏Excel行和列
excel隐藏了列数和行数 In some of my Excel workbooks there are calculation rows or columns that are required ...
- 【PhpSpreadsheet】实现excel冻结列和行(即左右滚动时指定列和行固定不动)
composer require phpoffice/phpspreadsheet 版本:^1.18 在做表格数据导出时,如何冻结列和行(即左右滚动时冻结的列和行固定不动) 代码 $spreadshe ...
- linux awk 排序,利用Shell中awk和sort命令合并同类数据后并依据某一列进行排序
待处理的数据格式如下: 为了便于统计分析,对数据进行如下处理: 当姓名相同的时候,将后面的值相加,最后依据后面值的大小进行排序. 思路:先使用awk对数据进行合并,然后使用sort对数据进行排序.aw ...
- 【Shell】awk命令--输出某列,列求和,列求平均值,列最大值,列去重复,取倒列,过滤行,匹配,不匹配,内置变量|定义分隔符|多个分隔符...
目录 awk基本语法 awk输出某几列 awk遍历文件行处理 awk中运行shell命令 方法1:awk 内置函数system 方法2 通过awk print 交给bash awk中运行shell命 ...
最新文章
- cookie和session 创建和验证 原始的servlet
- python爬虫获取的网页数据为什么要加[0-[Python爬虫] 等待网页加载后再获取内容...
- Add Two Numbers
- android java和c混合编程_C/C++在Java项目、Android和Objective-C三大平台下实现混合编程...
- C语言的math相关的函数
- flutter 动画json_Flutter 50: 图解动画小插曲之 Lottie 动画
- 探索Julia(part8)--循环语句和条件语句
- 什么时候觉得自己该离职了?
- git 无法提交空目录
- Android xml资源文件中@、@android:type、@*、?、@+含义和区别
- 【Scala】Scala中特殊函数的使用(代码)
- Linux htop工具使用详解
- MySQL学习4 数据过滤
- Mxnet框架学习笔记(一):常用数据操作方法学习记录
- python函数式编程模式_Python 函数式编程
- 平面一般力系最多可以求解_利用平面任意力系的平衡方程最多可求解几个未知量( )。...
- 【halcon】菜鸡入门,白纸黑点
- Django(十二):django支付(微信支付宝)+项目部署(虚拟机、docker、云服务器)
- html仿写网易云音乐人页面,vue模仿网易云音乐的单页面应用
- 如何在局域网中查看其他电脑上的文件