如何清除文件中的文本?
如何清除文本文件中存在的文本而不打开它?
我的意思是例如我有一个文件作为hello.txt,其中包含一些文本数据以及如何清除该文件中的总文本而不打开它。
只需用CTRL + ALT + T打开终端并输入
> hello.txt
就是这样,你的文件中的数据将被清除,甚至打开它。
例:
截断文件最简单的方法是将shell no-op命令(:)的输出重定向到要擦除的文件。
: > hello.txt
我也将使用rajagenupula的答案重定向。 但是有一点灵活性。 打开终端并输入,
cat > hello.txt
然后按Ctrl + C. 它将清除以前的文件。 如果你想要这么多,那就好了。
如果您希望在擦除文件后可以执行更多操作。 通过这种方式,您不仅可以在不打开的情况下擦除文件,还可以在文件中编写一些格式正确的行。 假设您希望在擦除文件后写“Ubuntu是最好的操作系统”,就这样做
cat > hello.txt Ubuntu is the best OS
然后按Ctrl + C. 现在,以前的文件已被删除。 与此同时,当我把它们放在两行时,单词就在那里。
看例子:
我必须一直使用日志文件。 我找到的最简单的方法是使用以下命令:
cat /dev/null > hello.txt
这将删除文件内容的同一个,并为您留下一个空文件,而无需在编辑器中打开它,选择文本,任何这些东西。 更具体地说,它的作用是用“/ dev / null”的内容替换文件的内容,或者什么也不做。 实际上它很漂亮。
唯一需要注意的是,您当前登录的用户必须具有对该文件的写入权限。
如果一个文件是用名称hello.txt创建的,并且提供了一些文本,那么终端ctrl + alt + t中的下面命令将删除hello.txt文件中的所有文本,
echo "" > hello.txt
另一种方法 – 将/dev/null
转换为文件
xieerqi:$ cat testFile.txt Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 115247656 83100492 26269816 76% / none 4 0 4 0% /sys/fs/cgroup udev 2914492 4 2914488 1% /dev tmpfs 585216 1152 584064 1% /run none 5120 0 5120 0% /run/lock none 2926072 98096 2827976 4% /run/shm none 102400 76 102324 1% /run/user xieerqi:$ cp /dev/null testFile.txt xieerqi:$ cat testFile.txt xieerqi:$
不是最短的答案,但……
这个答案基于超级用户的另一个。 虽然不是最短的bash命令,但truncate
对于普通新手来说是最具可读性的:
$ echo Hello > Hello.txt $ echo World! >> Hello.txt $ cat Hello.txt Hello World! $ truncate -s 0 Hello.txt $ ll Hello.txt -rw-rw-r-- 1 rick rick 0 Mar 20 17:32 Hello.txt
与truncate
命令一起使用的参数:
- “-s”设置大小
- “0”大小为零
清除除10,000个字节以外的所有内容
truncate
一个优点是你可以指定保留多少,而不仅仅是零:
$ truncate -s 10000 Hello.txt
…将在前10,000个字节后截断所有内容。 如果程序疯狂并将许多兆字节的数据转储到一个小的日志文件中,这可能很有用:
- 运行
truncate
命令以获得合理的较大正常大小10K - 使用文本编辑器打开文件,然后按“ 结束”
- 突出显示和PgUp删除不属于的其余字节(通常可由ASCII垃圾字符识别)。
所以,我看到很多重定向被用来回答这个问题;)
与组合有点不同的方法: rm&touch
rm hello.txt && touch hello.txt
( 是的……还有另一个骗子! )
因此,使用此命令组合时,文件hello.txt未打开 ,最后您仍然在其位置清除文件hello.txt。 就像你想要的一样!
vi filename -c ':1,$d' -c ':wq'
因为它拥有特别的许可,对我来说是最好的