如何用sed命令往空文件中写入数据
2017-09-30 04:08
447 查看
朋友碰到个难题,就是用sed命令往空文件末尾中写入数据,数据来自一个变量,怎么都添加不成功,然后问我要如何处理。仔细想了下,如果文件为非空的话,使用sed命令是可以搞定的,命令如下:
直接修改文件。
$ # 匹配文件的最后一行位置
a # 命令在后面append
但如果是空的话,上面的命令就搞不定了!为什么呢? 因为sed是基于行来处理的文件流编辑器,如果文件为空的话,它是处理不了的!找了段英文的解释如下:
大致情形就是:
【文件为空】
sed -i '$a\要插入的文字' file.txti #
直接修改文件。
$ # 匹配文件的最后一行位置
a # 命令在后面append
但如果是空的话,上面的命令就搞不定了!为什么呢? 因为sed是基于行来处理的文件流编辑器,如果文件为空的话,它是处理不了的!找了段英文的解释如下:
Sed is a stream editor. A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline). While in some ways similar to an editor which permits scripted edits (such as ed), sed works by making only one pass over the input(s), and is consequently more efficient. But it is sed’s ability to filter text in a pipeline which particularly distin- guishes it from other types of editors.
大致情形就是:
linux@host~# cat file.txt // 里面没有内容 linux@host~# touch file.txt // 新建一个空文件 linux@host~# cat file.txt // 里面没有内容 linux@host~# sed -i "\$a $var" file.txt // 往文件里面添加变量中的数据 linux@host~# cat file.txt // 但文件里面还是没有内容 linux@host~#那么这种情形要如何处理呢?可以加个判断,如果文件存在但为空的话,使用echo命令来添加,如果非空的话,则使用sed命令,所以完整的测试应该这样:
【文件为空】
# var变量中的内容 $ var='append new context' # 新建一个空文件 $ touch file.txt # 文件内容为空 $ cat file.txt $ # 判断文件是否为空,空则使用echo命令添加,非空则使用sed命令 $ test -s file.txt && sed -i "\$a $var" file.txt || echo "$var" >> file.txt $ cat file.txt append new context【文件非空】
linux@host~# cat file.txt This is line 1. This is line 2. linux@host~# test -s file.txt && sed -i "\$a $var" file.txt || echo "$var" >> file.txt linux@host~# cat file.txt This is line 1. This is line 2. append new context从上面来看,问题得到完美的解决!
相关文章推荐
- 如何从网页上读取数据,将数据写入文件和读出
- 如何把数据保存成16进制写入文件
- Lua 编程: 如何给文件写入二进制数据
- 如何替换某文件中的所有的特定字符?---linux sed命令(文本编辑命令) (转载)
- MATLAB: 如何读取txt中的文件 如何将数据批量写入数据 文件名递增
- asp.net(c#)如何读取上传过程中的.txt文件中的数据,并将其写入数据库的
- 如何创建内存映射文件,并对其进行写入与读取数据
- android中bluedroid如何读取pcm数据,并将其写入文件中?
- python 在excel文件中写入date日期数据,以及读取excel日期数据,如何在python中正确显示date日期。
- 如何在写入一个long型的数据到文件?在线等。20分送!
- 在Java中如何读取用MATLAB的fwrite()函数写入文件的数据
- 第4章 处理用户输入与显示数据------------(禁止命令输出、lsof命令、关闭文件描述符、创建读取/写入文件描述符)
- 第4章 处理用户输入与显示数据------------(禁止命令输出、lsof命令、关闭文件描述符、创建读取/写入文件描述符)
- 如何试用mail 命令发送一些常规日志文件或数据
- Java 如何将数据追加写入到文件
- 如何替换某文件中的所有的特定字符?---linux sed命令(文本编辑命令)
- 请教大家,如何使用sed命令,替换文件指定行的内容呢?-Linux系统管理-ChinaUnix.net
- 如何在文件末尾写入新数据(2011-12-23 15:49:50)
- 如何通过sed命令在文件中包含某个关键字的指定行的上面或下面插入内容
- Java 如何将数据追加写入到文件