转换空格分隔的txt文件为csv文件的shell命令

而且空格数并不确定

cat test.txt | sed 's/\t/,/g;s/[[:space:]]//g' >test.csv

PS:有个简洁的方法

cat test.txt | tr "[[:space:]]"

"\t" >test.csv

注:cat test.txt

| tr "old value" "new

value" >test.csv

sed详解

sed 执行过程为:

1. 从输入读取一行数据存入临时缓冲区,此缓冲区称为模式空间(pattern space)

2. 按指定的 sed 编辑命令处理缓冲区中的内容

3. 把模式空间的内容送往屏幕并将这行内容从模式空间中删除

4. 读取下面一行。重复上面的过程直到全部处理结束。

sed  p操作

显示文件的全部内容

$sed -n p test.sh

显示文件第五行的内容

$sed  -n  5p  test.sh

显示文件最后一行的内容

$sed  -n  '$p'  test.sh

显示文件从第3行开始到第10行的内容

$sed  -n 3,10p  test.sh

显示文件第3行以及之后10行的内容

$sed  -n 3,+10p  test.sh

显示文件从第3行开始到最后一行的内容

$sed  -n '3,$p'  test.sh

显示文件从第3行开始步长为5的行的内容

$sed  -n 3~5p  test.sh

显示文件中所有包含core的行

$sed  -n  /core/p  test.sh

显示文件中所有不包含core的行

$sed  -n  '/core/!p'  test.sh

显示文件中从第3行开始到其后第一次出现core的内容

$sed  -n  3,/core/p  test.sh

UERNAME="yw"

PASSWORD="123456"

DBNAME="monitor_core"

显示文件中从第一次出现core的行开始到最后一行的内容

$sed  -n  '/core/,$p'  test.sh

显示文件中从第一次出现core开始的行到第一次出现eroc开始的行

$sed  -n  /^core/,/^eroc/p  test.sh

============================================================

sed替换命令

在每一个输入行中,将第一个出现的windows替换为linux

$ sed  's/windows/linux/'  test.sh

在每一个输入行中,将第一个出现的windows替换为linux,打印替换结果的行

$ sed  -n  's/windows/linux/p'  test.sh

在每一个输入行中,将出现的每一个windows替换为linux

$ sed  's/windows/linux/g'  test.sh

在每一个输入行中,将出现的每一个windows替换为linux,打印替换结果的行

$ sed  -n  's/windows/linux/g'  test.sh

在每一个输入行中,将出现的每一个unix替换为unix/linux(&表示匹配到的字符串)

$ sed  -e  's/unix/&\linux/g'  test.sh

将所有连续出现的c都压缩成单个的c

$ sed  's/cc*/c/g'  test.sh

删除首行的一个空格

$  sed   's/  //'  test.sh

删除每一行前导的连续“空白字符”

$  sed  's/^[ \t]*//'  test.sh

删除以句点结尾的行中末尾的句点

$ sed  's/\.$//g'  test.sh

删除每行的第一个字符

$ sed  's/.//'  test.sh

删除每行结尾的所有空格

$ sed  's/  *$//'  test.sh

在文件的每一行开始处插入两个空格

$ sed  's/^/  /'  test.sh

在每一行开头加上一个尖括号和空格

$ sed  's/^/> /'  test.sh

将每一行开头处的尖括号和空格删除

$ sed  's/^> //'  test.sh

删除路径前缀

$ sed  's/.*\///'  test.sh

$ ls  -d  /usr/share/man/man1  |sed  's/.*\///'

过滤掉所有的标点符号(.,?!)

$ sed  's/\.//g'  -e  's/\,//g'  -e  's/\?//g'  -e  's/\!//g'  test.sh

注:无论什么字符,紧跟着s命令的都被认为是分隔符

$ sed  's#/some/path/old#/some/path/new#g'  test.sh

替换的速度优化:可以考虑在替换命令(“s/…/…/”)前面加上地址表达式来提高速度。

sed  's/foo/bar/g'  test.sh                     //标准替换命令

sed  '/foo/  s/foo/bar/g'  test.sh         //速度更快

sed  '/foo/  s//bar/g'  test.sh               //简写形式

若只替换第一次匹配foo的行,可以使用q短路后续行的执行。

sed  '/foo/{s/foo/bar/:q}'  test.sh

==================================================================

其他命令使用举例

删除所有空白行

$ sed  '/^$/d'  test.sh

$ sed  '/./!d'  test.sh

删除文件顶部的所有空行

$ sed  '/./,$!d'  test.sh

从输入的开头一直删除到第一个空行

$ sed  '1,/^$/d'  test.sh

删除所有的偶数行,与sed -n '1~2p' test.sh等效

$ sed  'n;d'  test.sh

删除掉所有包含'GUI'的行

$ sed  '/GUI/d'  test.sh

将所有“GUI”都删除掉,并保持剩余部分的完整性

$ sed  's/GUI//g'  test.sh

在每一行后面增加一个空行

$  sed  G  test.sh

在匹配'regex'的行之后插入一个空行

$ sed  '/regex/G'  test.sh

将test.sh中从case开始的行到esac结束的行写到文件case-block

$ sed  '/^case/,/^esac/w  case-block '  test.sh

在test.sh末尾($)追加新行

(反斜杠\是必需的,它表示将插入一个回车符。在任何需要输入回车的地方都必须使用反斜杠)

$ sed  '$a\

>newline1\

>newline2\

>newline3'  test.sh

在匹配'regex'的行之后追加新行

$  sed  '/regex/a\

>newline1\

>newline2\

>newline3'  test.sh

注:在i\和c\操作的格式与上面的a\操作的格式相同

shell脚本读取csv文件_shell命令实现txt文件转换为csv文件 | 学步园相关推荐

  1. shell脚本读取文件夹内文件名称

    shell脚本读取文件夹内文件名称代码如下: 1.配置文件: readFilePath=/wocloud/soft/tomcat/selfYearAppraiseTomcat/selfYearAppr ...

  2. Shell 脚本中如何使用make命令

    最近开发的项目中需要编写Shell脚本对整个工程进行自动化编译,即在Shell脚本中使用make命令来进行编译,下面回顾一下Shell脚本中如何使用make命令) 在开发一个系统时,一般是将一个系统分 ...

  3. Shell脚本学习-阶段二十七-命令解释一

    文章目录-命令解释一 前言 as expr gcc gcov gdb indent ld ldconfig ldd make mktemp nm objdump perl php protoize u ...

  4. Shell脚本学习-阶段二十七-命令解释二

    文章目录-命令解释二 前言 emacs jed joe nano================ pico sed=================== vi,vim============ mtyp ...

  5. Linux Shell脚本入门--wget 命令用法详解

    Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...

  6. 高级shell脚本编程之函数库、信号与陷进、文件处理、数组、安全性

    高级shell脚本编程之函数库.信号与陷进.文件处理.数组.安全性 1.函数库 把所有需要用到的函数都放到一个文件中,然后每个脚本的开头包含这个文件.例如: #!/bin/sh scope(){ lo ...

  7. Shell脚本读取mysql结果集各数据项的值

    在linux下用shell脚本读取mysql结果集各数据项的值,按行读取sql结果,将sql执行结果读取到shell变量中,然就可进行处理. HOSTNAME="172.16.xx.xx&q ...

  8. Office系列---将Office文件(Word、PPT、Excel)转换为PDF文件,提取Office文件(Word、PPT)中的所有图片

    将Office文件转换为PDF文件,提取Office文件中的所有图片 1.Office系列---将Office文件(Word.PPT.Excel)转换为PDF文件 1.1 基于Office实现的解决方 ...

  9. linux 读取命令行输入参数,shell脚本读取文件+读取命令行参数+读取标准输入+变量赋值+输出到文件...

    读取url_list文件批量下载网页 url_list http://www.tianyancha.com/company/2412078287 http://www.4399.com/special ...

  10. shell脚本将mysql数据库中查询结果导出制作成.CSV格式文件;或.txt/.log文件

    #第一种方法在命令行中直接执行下面代码(.log可替换为其他格式文件) mysql -hlocalhost -P3306 -uroot -p1234 -e"select * from dem ...

最新文章

  1. timer计时器 java_java中基于timer计时器的图片播放
  2. endnote修改正文中参考文献标注_请问endnote里,如何把正文中插入参考文献处的格式由数字转为(作者,年份)?感恩!...
  3. function——函数声明头的提升和预解析
  4. 前端学习(2007)vue之电商管理系统电商系统之优化复选框的样式
  5. [Android]BaseExpandableListAdapter实现可折叠列表
  6. fiilt1左耳连不上_「体验」FIIL T1 X 真无线运动耳机:闪连秒同步,让左耳和右耳开始约会...
  7. GNU C的定义长度为0的数组
  8. JavaWeb项目的热部署配置
  9. w3school和w3cschool两个网站有什么关系和区别?
  10. 去了一趟字节跳动,被怼了!
  11. 关于win11没有ie 11的问题
  12. ios 开发者论坛和资料站点
  13. 实验室管理系统[LIS],powerbuilder12.6开发,SQLSERVER2008数据库
  14. 89.破碎的玻璃横幅
  15. python爬取豆瓣图书top250_「豆瓣读书250」爬取豆瓣TOP250书单 - seo实验室
  16. 如何专业查看视频/音频/图片信息
  17. SVG互动排版公众号图文 『两次物体移动与展开长图』 模板代码
  18. JavaPoet的使用指南
  19. XILINX DDR4 SDRAM(MIG)笔记2(基于VU9P FPGA)
  20. 《MongoDB》 数组操作

热门文章

  1. Python自然语言处理学习笔记(64): 7.5 命名实体识别
  2. Android相对属性布局总结
  3. 2010十一月份日用百货热销品货源推荐
  4. Subversion 安装文件及操作手册
  5. 一组优秀的 for .NET Winform UI控件——DotNetMagic最新版本2.3,推荐使用
  6. 2-4 赋值运算符“=”
  7. java语言标识符的声明规范
  8. 【iCore4 双核心板_uC/OS-II】例程八:消息邮箱
  9. spring ORM管理
  10. Linux和windows动态库