linux - 在文件上使用粘贴命令并将结果保存到同一文件
问题描述
基本上我正在使用粘贴命令更改文件中的回车符,但我想将结果保存到同一个文件中。
paste -s -d, filename1
我无法安装 Sponge 之类的任何工具。
解决方案
如果您真的想使用该paste
命令,您将不得不采用像这样的方法,使用tmp
文件并替换原始文件(在执行此操作之前备份文件):
XXX@XXX:~/Downloads/fun_play/archive/filestosearch$ cat filename1
abc
123
edf
xyz
XXX@XXX:~/Downloads/fun_play/archive/filestosearch$ paste -s -d, filename1 > filename2 && mv filename2 filename1
XXX@XXX:~/Downloads/fun_play/archive/filestosearch$ cat filename1
abc,123,edf,xyz
注意:paste
移动操作只有在没有错误的情况下才会发生
如果您被允许使用其他命令,sed
那么您可以使用内联模式直接修改文件,而无需创建 tmp 文件。
XXX@XXX:~/Downloads/fun_play/archive/filestosearch$ cat filename1
abc
123
edf
xyz
XXX@XXX:~/Downloads/fun_play/archive/filestosearch$ sed -i".bak" ':loop;N;$!bloop;s/\n/,/g' filename1
XXX@XXX:~/Downloads/fun_play/archive/filestosearch$ cat filename1
abc,123,edf,xyz
XXX@XXX:~/Downloads/fun_play/archive/filestosearch$ cat filename1.bak
abc
123
edf
xyz
笔记:
-i".bak"
允许您修改文件并备份文件以防万一,相同的文件名和后缀.bak
':loop;N;$!bloop;s/\n/,/g'
创建一个标签loop
,将每一行添加到模式缓冲区,当没有到达最后一行时,go to
标签loop
,当你到达最后一行时,将所有 EOL(\n
)替换为,
.
推荐阅读
- python - Python 中不支持按位异或的操作数类型
- java - KafkaStreams 没有运行。状态为错误
- algorithm - 计算半铰接卡车的位移坐标
- sql-server - 基于“案例”语句隐藏行
- c# - 为什么关闭标签显示在视图中?
- google-colaboratory - 如何在谷歌 Colab 中渲染 OpenAI 健身房?
- javascript - 找不到 Javascript 错误
- mongodb - MongoDB中的复合索引效率不清楚
- c++ - 如果构造函数不采用任何输入参数,则使用显式构造函数?
- python - hybrid_property 在 if/else 中引发 TypeError