今天需要删除文件里面的换行符,比如有一个文件a.txt:
1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6
1、使用vim删除换行符
vim输入命令:%s/\n//g
2、使用sed命令,例如 sed ':t;N;s/\n//;b t' a.txt
结果:1,2,34,5,61,2,34,5,61,2,34,5,61,2,34,5,61,2,34,5,6
解释一下:
:t 定义label "t" b t 转到label "t" 继续执行 N 先读入一行到sed的模板空间,加个换行符(\n),再向sed模板空间追加下一行(之后sed 对模板空间中的内容执行s/\n/,/替换,并显示替换后的内容)
3、使用td命令,例如:
cat a.txt | tr '\n' ' ' 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6
注意tr最后那个参数是空格,否则会报错
Linux shell 中删除文件的所有换行符
需要做一个小功能,就是把一个文本文件中的所有换行符都去掉。一般肯定是想到使用sed来修改啦。但是我搜了一下,并没有找到sed要怎么输入\n——我知道^M对应的是\r,但是\n却失败了,在命令行中直接被切割掉。
原则上可以用\015这样的方式来指定的,但是我实际操作发现并不行,没有效果。所以最终我只能用直接输入命令来做了(还没验证过写成脚本是否能用)。
假设要替换的文件叫做in.txt,输出文件为out.txt:
sed 's/^M//g' file.txt > tmp.txt sed -i 's/\"/\\\"/g' tmp.txt rm -f out.txt; touch out.txt cat tmp.txt | xargs echo -n >> out.txt rm -f tmp.txt
五个步骤分别为:
将Windows格式的换行转换成UNIX格式,也就是删除所有的\r字符。其中^M并不是直接输入这两个字符,而是通过在shell里面按住 Ctrl+V,然后再敲 M 得到的
将所有的双引号转义,因为后面的echo需要使用
创建一个全空的输出文件
删除所有的\n字符并输出最终文件
删除中间文件
Linux Mint 20.2“Uma”中的新
EasyWSL工具将 Linux Docker 映
适用于 Linux 5.16 的新 Zst
适用于Linux的Windows子系统
Linux系统xlsatom命令如何使
阅读

阅读

阅读

阅读

阅读

阅读

阅读

阅读

阅读

阅读
Windows10 Insider Preview Build 20246将自动Linux发
Wine的最新版本改进了Linux系统上的Window
WSLg-现在可以直接在Windows10下启动Linux程序
Windows11 WSL2 的性能与裸机 Ubuntu Linux 相比
Linux Mint 20.2“Uma”中的新功能
您的PC不支持Win11也许是时候尝试Linux了
WindowsSubsystem for Linux(WSL)2对Windows10版本1
WindowsSubsystem for Linux(WSL)2对Windows10版本1903和1909的支持 根据客户......
阅读
Windows10 Insider Preview Build 20246将自动Linux发
微软已经向开发通道中的Windows Insiders宣布了Windows 10 Insider Prev......
阅读
Wine的最新版本改进了Linux系统上的Window
bull; Wine最近收到了对6.0版的更新。 bull; 此更新改进了使用Wine的......
阅读
WSLg-现在可以直接在Windows10下启动Linux程序
有趣的是,微软正在努力使Linux在Windows10下运行。我们都熟悉W......
阅读
Windows11 WSL2 的性能与裸机 Ubuntu Linux 相比
适用于 Linux 的 Windows 子系统既是一种启示,也是一场革命。现在......
阅读