2017-10-19 19:44:57 xwbk12 阅读数 19046
  • 玩转Linux:常用命令实例指南

    本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通 。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 注意: 1、本课程原价99元,现在仅需29元!购课就送5门价值300元的编程课! 2、购课后登陆csdn学院官网,在课程目录页面即可下载课件。 学完即可轻松应对工作中 85% 以上的 Linux 使用场景 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本课程【现在享受秒杀价39元】 3)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 注意: 1)现在购买至少享受60元优惠; 2)购课后添加微信eduxy-1,发送订单截图领取300元编程礼包。 --------------------------------------------------------------- 这门课程,绝对不会让你觉得亏! 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+300元编程礼包。   人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。   在这门课中,我们保证你能收获到这些 1)快速掌握 Linux 常用命令及配置 2)Linux核心知识点 3) 文件、进程、磁盘、用户管理,以及网络工具命令、文件传输等 4)Vi/Vim编辑器用法  

    7034 人正在学习 去看看 良许

linux命令—vi编辑器快速定位行数、删除当前行、和删除当前行后面的全部内容

1、vi 编辑器如何快速定位到第N行
命令方式下 :n

http://bbs.chinaunix.net/thread-2243934-1-1.html

2、删除当前行数
dd删除当前行。(直接在vi编辑中按下字母dd即删除当前行)

3、删除当前行后面的全部内容
dG是删除当前后面的全部内容(直接在vi编辑中按下字母dG即删除当前行及后面所有内容)

http://bbs.chinaunix.net/thread-1932388-1-1.html

2010-11-24 14:51:00 hahalzb 阅读数 128309
  • 玩转Linux:常用命令实例指南

    本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通 。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 注意: 1、本课程原价99元,现在仅需29元!购课就送5门价值300元的编程课! 2、购课后登陆csdn学院官网,在课程目录页面即可下载课件。 学完即可轻松应对工作中 85% 以上的 Linux 使用场景 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本课程【现在享受秒杀价39元】 3)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 注意: 1)现在购买至少享受60元优惠; 2)购课后添加微信eduxy-1,发送订单截图领取300元编程礼包。 --------------------------------------------------------------- 这门课程,绝对不会让你觉得亏! 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+300元编程礼包。   人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。   在这门课中,我们保证你能收获到这些 1)快速掌握 Linux 常用命令及配置 2)Linux核心知识点 3) 文件、进程、磁盘、用户管理,以及网络工具命令、文件传输等 4)Vi/Vim编辑器用法  

    7034 人正在学习 去看看 良许

1.打开文件

2.转到文件结尾

或转到第9行

3.删除所有内容(先用G转到文件尾)(%$$#^71267*&%2)我型我塑www.5x54.com ,使用:

或者删除第9行到第200行的内容(先用200G转到第200行)(%$$#^71267*&%2)我型我塑www.5x54.com ,使用

 

删除说明:这是在vi中(%$$#^71267*&%2)我型我塑www.5x54.com ,“.”当前行(%$$#^71267*&%2)我型我塑www.5x54.com ,“1,.”表示从第一行到当前行(%$$#^71267*&%2)我型我塑www.5x54.com ,“d”删除

(%$$#^71267*&%2)我型我塑www.5x54.com

(%$$#^71267*&%2)我型我塑www.5x54.com

(%$$#^71267*&%2)我型我塑www.5x54.com

(%$$#^71267*&%2)我型我塑www.5x54.com

2017-04-16 00:16:37 YuZhiHui_No1 阅读数 8413
  • 玩转Linux:常用命令实例指南

    本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通 。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 注意: 1、本课程原价99元,现在仅需29元!购课就送5门价值300元的编程课! 2、购课后登陆csdn学院官网,在课程目录页面即可下载课件。 学完即可轻松应对工作中 85% 以上的 Linux 使用场景 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本课程【现在享受秒杀价39元】 3)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 注意: 1)现在购买至少享受60元优惠; 2)购课后添加微信eduxy-1,发送订单截图领取300元编程礼包。 --------------------------------------------------------------- 这门课程,绝对不会让你觉得亏! 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+300元编程礼包。   人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。   在这门课中,我们保证你能收获到这些 1)快速掌握 Linux 常用命令及配置 2)Linux核心知识点 3) 文件、进程、磁盘、用户管理,以及网络工具命令、文件传输等 4)Vi/Vim编辑器用法  

    7034 人正在学习 去看看 良许

用C语言来操作文件内容还是有点烦的(尤其是删除内容,或者是修改非等长度的内容),没有现成的API调用,只能自己手动写;

网上查了下资料基本就两个方案:

1、增加个临时文件;把源文件内容逐个字节或者逐行读取出来,然后修改或者丢弃,放到临时文件中,当把源文件中所有内容过滤后,再把临时文件全部覆盖回源文件;

2、读取到内存中修改;把整个文件读取到内存中,然后修改,再覆盖回到源文件;


第1种方案,会多一个临时文件,这样不太安全,使用C语言来做这种事,很大一方面就是考虑到安全性;

第2种方案,读取到内存中,这种方法有个缺陷是你不知道源文件大小,如果源文件很大的话,你要分配很大内存;


我们应该怀疑下,为什么 shell 命令可以很方便的删除、修改文件内容,这绝对不会有临时文件产生,也不会占用多大内存,或者可以说占用的内存不会随着文件的大小而改变?


我想了下,有个新方案,或许就是shell命令的原理;(我没有去研究shell命令的删除实现);


新方案是利用文件指针,如下图:


其实看下上面的图就应该知道了,就是利用文件指针,类似队列那样,一个是入队列一个是出队列;

流程:

a、首先保存两个位置,1、读取文件内容的偏移量;2、写入文件内容的偏移量;

b、用 seek + 读文件偏移量  来设置下读取内容指针偏移量,读取一行数据; 同时修改下读取偏移量;

c、对这一行数据进行判断,修改,或者删除;

d、用seek + 写入偏移量 来设置下文件位置指针,把 c 步骤中修改的内容回写到文件;同时修改下写入偏移量;

e、循环读取所有源文件内容;

f、根据写入文件偏移量(因为写入的才是有效的数据,写入偏移量就代表了文件大小),截取下文件,把无效内容干掉;

转载地址:http://blog.csdn.net/yuzhihui_no1/article/details/70188384


下面是代码实现:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <unistd.h>

#define BUFF_LEN 256 

/*
 * 删除文件中无效内容
 * */
int clean_invalue_info(FILE *file_fd)
{
	assert(file_fd);

	char buff[BUFF_LEN] = {0};
	int buff_len = 0;

	long offset_read = 0;
	long offset_write = 0;

	while(fgets(buff, BUFF_LEN, file_fd)) {
        buff_len = strlen(buff);

        if (strstr(buff, "yzh")) { //有效数据要考虑移动
			if (offset_read == offset_write) {
				offset_write = offset_write + buff_len;
		        offset_read = offset_read + buff_len;
				continue;
			} else {
			    /*移动数据*/
			    fseek(file_fd, offset_write, SEEK_SET);
			    fputs(buff, file_fd);
			    offset_write = offset_write + buff_len;

		        offset_read = offset_read + buff_len;
		        fseek(file_fd, offset_read, SEEK_SET);
				continue;
			}
		}
		offset_read = offset_read + buff_len;
	}
	ftruncate(fileno(file_fd),offset_write);
}

int testt(FILE *file_fd)
{
	char buff[BUFF_LEN] = {0};
	int buff_len = 0;
	long offset_read = 0;
	char *str = "11111111111";

	fseek(file_fd, 0, SEEK_SET);
	fputs(str, file_fd);
	fgets(buff, BUFF_LEN, file_fd);
	printf("1. %s\n", buff);

	buff_len = strlen(buff);
	fgets(buff, BUFF_LEN, file_fd);
	printf("2. %s\n", buff);

	fseek(file_fd, buff_len, SEEK_SET);
	fgets(buff, BUFF_LEN, file_fd);
	printf("3. %s\n", buff);

	return 0;
}


int main(int argc, char *argv[])
{
	FILE *file_fd = fopen("./tt", "r+");
	clean_invalue_info(file_fd);
//    testt(file_fd);
	fclose(file_fd);

	return 0;
}

上面代码已经调试通过,为方便理解,没有优化过;

转载地址:http://blog.csdn.net/yuzhihui_no1/article/details/70188384


2012-08-01 10:38:17 johnny710vip 阅读数 99
  • 玩转Linux:常用命令实例指南

    本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通 。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 注意: 1、本课程原价99元,现在仅需29元!购课就送5门价值300元的编程课! 2、购课后登陆csdn学院官网,在课程目录页面即可下载课件。 学完即可轻松应对工作中 85% 以上的 Linux 使用场景 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本课程【现在享受秒杀价39元】 3)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 注意: 1)现在购买至少享受60元优惠; 2)购课后添加微信eduxy-1,发送订单截图领取300元编程礼包。 --------------------------------------------------------------- 这门课程,绝对不会让你觉得亏! 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+300元编程礼包。   人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。   在这门课中,我们保证你能收获到这些 1)快速掌握 Linux 常用命令及配置 2)Linux核心知识点 3) 文件、进程、磁盘、用户管理,以及网络工具命令、文件传输等 4)Vi/Vim编辑器用法  

    7034 人正在学习 去看看 良许

1,先打开某个文件:

vi   filename

2,转到文件结尾

在命令模式输入 G

      转到10行

在命令模式输入 10G

4,删除所有内容:先用G 转到文件尾,然后使用下面命令:

:1, .d

    删除第10行到第20行的内容:先用20G转到第20行,然后使用下面命令:

:9, .d

关于删除的一些说明:在vi中," .  "表示当前行,“1,。”表示从第一行到当前行,“d”

2019-04-28 15:42:36 yuki5233 阅读数 951
  • 玩转Linux:常用命令实例指南

    本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通 。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 注意: 1、本课程原价99元,现在仅需29元!购课就送5门价值300元的编程课! 2、购课后登陆csdn学院官网,在课程目录页面即可下载课件。 学完即可轻松应对工作中 85% 以上的 Linux 使用场景 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本课程【现在享受秒杀价39元】 3)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 注意: 1)现在购买至少享受60元优惠; 2)购课后添加微信eduxy-1,发送订单截图领取300元编程礼包。 --------------------------------------------------------------- 这门课程,绝对不会让你觉得亏! 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+300元编程礼包。   人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。   在这门课中,我们保证你能收获到这些 1)快速掌握 Linux 常用命令及配置 2)Linux核心知识点 3) 文件、进程、磁盘、用户管理,以及网络工具命令、文件传输等 4)Vi/Vim编辑器用法  

    7034 人正在学习 去看看 良许

目录

概述

在 Linux 终端下处理文件时,有时我们想直接清空或删除文件的内容但又不想使用任何Linux命令行编辑器去打开这些文件。那怎样才能达到这个目的呢?在这篇文章中,我们将介绍几种借助一些实用的命令来直接清空或删除大文件内容的方法。

注意: 由于在Linux系统中一切皆文件,我们需要时刻注意,确保将要清空的文件不是重要的用户文件或者系统文件。清空重要的系统文件或者配置文件可能会引发严重的应用失败或者系统错误。切记!!!

准备测试文件

我们将使用/home/yuki/yuki_test.log的文件来做测试。

[yuki@localhost ~]$ cd /home/yuki/
[yuki@localhost ~]$ touch /home/yuki/yuki_test.log
[yuki@localhost ~]$ ll
total 4
-rw-r--r--. 1 yuki root 31 Apr 28 14:29 /home/yuki/yuki_test.log
[yuki@localhost ~]$ echo JAVA_OPTS='-Xms2048m -Xmx12288m'  > /home/yuki/yuki_test.log
[yuki@localhost ~]$ cat /home/yuki/yuki_test.log 
JAVA_OPTS=-Xms2048m -Xmx12288m

方法+实例演练

方法1: 通过重定向到null来清空文件内容

清空最简单方式,就是通过 shell重定向 null (不存在的事物)到该文件,具体如下:

[yuki@localhost ~]$ du -sh /home/yuki/yuki_test.log 
4.0K    /home/yuki/yuki_test.log
[yuki@localhost ~]$ > /home/yuki/yuki_test.log 
[yuki@localhost ~]$ du -sh /home/yuki/yuki_test.log 
0       /home/yuki/yuki_test.log

方法2: 使用冒号":" 或 "true"命令重定向来清空文件

冒号":" 在linux命令行中它可以理解成是shell的一个内置命令,等同于"true"命令,它可被用来作为一个 no-op(即不进行任何操作)。
清空文件内容的方法是将 冒号":" 或 “true” 内置命令的输出重定向到文件中,具体如下:

[yuki@localhost ~]$ echo JAVA_OPTS='-Xms2048m -Xmx12288m'  > /home/yuki/yuki_test.log
[yuki@localhost ~]$ du -sh /home/yuki/yuki_test.log 
4.0K    /home/yuki/yuki_test.log
[yuki@localhost ~]$ : > /home/yuki/yuki_test.log 
[yuki@localhost ~]$ du -sh /home/yuki/yuki_test.log 
0       /home/yuki/yuki_test.log


[yuki@localhost ~]$ echo JAVA_OPTS='-Xms2048m -Xmx12288m'  > /home/yuki/yuki_test.log
[yuki@localhost ~]$ du -sh /home/yuki/yuki_test.log 
4.0K    /home/yuki/yuki_test.log
[yuki@localhost ~]$ true > /home/yuki/yuki_test.log 
[yuki@localhost ~]$ du -sh /home/yuki/yuki_test.log 
0       /home/yuki/yuki_test.log

方法3: 使用"echo -n "命令清空文件内容

可以使用echo命令将空字符串的内容重定向到文件中,具体如下:

[yuki@localhost ~]$ echo JAVA_OPTS='-Xms2048m -Xmx12288m'  > /home/yuki/yuki_test.log
[yuki@localhost ~]$ du -sh /home/yuki/yuki_test.log 
4.0K    /home/yuki/yuki_test.log
[yuki@localhost ~]$ echo "" > /home/yuki/yuki_test.log 
[yuki@localhost ~]$ du -sh /home/yuki/yuki_test.log 
4.0K    /home/yuki/yuki_test.log
[yuki@localhost ~]$ cat /home/yuki/yuki_test.log 

[yuki@localhost ~]$

注意:空字符串并不等同于null 。字符串表明它是一个具体的事物,只不过它的内容可能是空的,但null则意味着某个事物并不存在。
基于以上原因,当你将echo命令的输出作为输入重定向到文件后,使用cat命令来查看该文件的内容时,你将看到一个空白行(即一个空字符串,但文件大小并不会变成0)

在使用echo命令时,如果要将null做为输出输入到文件中,必须要使用echo命令的-n参数。

[yuki@localhost ~]$ echo JAVA_OPTS='-Xms2048m -Xmx12288m'  > /home/yuki/yuki_test.log
[yuki@localhost ~]$ cat /home/yuki/yuki_test.log 
JAVA_OPTS=-Xms2048m -Xmx12288m
[yuki@localhost ~]$ echo -n "" > /home/yuki/yuki_test.log 
[yuki@localhost ~]$ cat /home/yuki/yuki_test.log 
[yuki@localhost ~]$ du -sh /home/yuki/yuki_test.log 
0       /home/yuki/yuki_test.log

方法4: 使用truncate命令来清空文件内容

truncate 命令可被用来将一个文件缩小或者扩展到某个指定的大小。
-s 参数用来指定文件需要缩小或者扩展的大小。要清空文件的内容,-s 后面指定的文件大小就是0,具体方法如下:

[yuki@localhost ~]$ echo JAVA_OPTS='-Xms2048m -Xmx12288m'  > /home/yuki/yuki_test.log
[yuki@localhost ~]$ cat /home/yuki/yuki_test.log 
JAVA_OPTS=-Xms2048m -Xmx12288m
[yuki@localhost ~]$ du -sh /home/yuki/yuki_test.log 
4.0K    /home/yuki/yuki_test.log
[yuki@localhost ~]$ truncate -s 0 > /home/yuki/yuki_test.log 
truncate: missing file operand
Try 'truncate --help' for more information.
[yuki@localhost ~]$ truncate -s 0 /home/yuki/yuki_test.log 
[yuki@localhost ~]$ du -sh /home/yuki/yuki_test.log 
0       /home/yuki/yuki_test.log

方法5: 使用cat命令和/dev/null设备来清空文件内容

在Linux中,/dev/null设备基本上被用来丢弃某个进程不再需要的输出流,或者作为某个输入流的空白文件,这些通常可以利用重定向机制来达到,它会清空送到它这里来的所有输入,而它的输出也可以被视为一个空文件。
所以,使用 cat命令显示 /dev/null 的内容然后重定向输出到某个文件,以此来达到清空该文件的目的。

[yuki@localhost ~]$ echo JAVA_OPTS='-Xms2048m -Xmx12288m'  > /home/yuki/yuki_test.log
[yuki@localhost ~]$ cat /home/yuki/yuki_test.log 
JAVA_OPTS=-Xms2048m -Xmx12288m
[yuki@localhost ~]$ du -sh /home/yuki/yuki_test.log 
4.0K    /home/yuki/yuki_test.log
[yuki@localhost ~]$ cat /dev/null > /home/yuki/yuki_test.log 
[yuki@localhost ~]$ du -sh /home/yuki/yuki_test.log 
0       /home/yuki/yuki_test.log
没有更多推荐了,返回首页