问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

CentOS 7文件编辑技巧大揭秘!

创作时间:
作者:
@小白创作中心

CentOS 7文件编辑技巧大揭秘!

引用
5
来源
1.
https://phoenixnap.com/kb/how-to-install-vim-centos-7
2.
https://www.cnblogs.com/lei0213/p/8719529.html
3.
https://www.geeksforgeeks.org/how-to-edit-text-files-in-linux/
4.
https://goldenhost.com/secure/knowledgebase/74/How-to-install-Vim-editor-on-CentOS-7.html
5.
https://www.unix.com/unix-for-advanced-and-expert-users/283448-why-editing-file-renaming-new-one-safer.html

在Linux系统中,尤其是使用CentOS 7时,掌握文件编辑的命令行技巧对于提高工作效率至关重要。本文将详细介绍如何利用vi/vim编辑器、sed和awk等工具,在CentOS 7下高效地完成文件修改任务。通过学习这些实用的技巧,你将能够更加轻松地应对日常运维和开发工作中的各种挑战。

01

常用的文件编辑工具

在CentOS 7中,有多种工具可用于文件编辑。其中最常用的包括:

  • vi/vim:功能强大的文本编辑器,适合进行复杂的文本编辑操作。
  • sed:流编辑器,适用于自动化文本处理和转换。
  • awk:强大的文本处理语言,特别适合处理结构化数据。
02

vi/vim编辑器的使用

vi/vim是Linux系统中最常用的文本编辑器之一。它具有多种模式,包括命令模式、插入模式和可视模式等。下面是一些基本操作:

基本操作模式

  • 命令模式:启动vim后默认进入的模式,可以输入各种命令。
  • 插入模式:按i键进入,可以输入文本。按Esc键退出插入模式。
  • 底行模式:输入命令行命令,如保存文件等。

常用命令

  • 移动光标

    • h:左移
    • j:下移
    • k:上移
    • l:右移
    • 0:移动到行首
    • $:移动到行尾
    • gg:移动到文件开头
    • G:移动到文件结尾
  • 搜索与替换

    • /pattern:向下搜索pattern
    • ?pattern:向上搜索pattern
    • :s/old/new/:替换当前行的第一个old为new
    • :s/old/new/g:替换当前行所有old为new
    • :%s/old/new/g:替换整个文件所有old为new
  • 保存与退出

    • :w:保存
    • :q:退出
    • :wq:x:保存并退出
    • :q!:强制退出不保存

安装最新版本的Vim

CentOS 7默认可能没有安装最新版本的Vim。你可以按照以下步骤安装Vim 8.2:

sudo yum install gcc make ncurses ncurses-devel
sudo yum install ctags git tcl-devel ruby ruby-devel lua lua-devel luajit luajit-devel python python-devel perl perl-devel perl-ExtUtils-ParseXS perl-ExtUtils-XSpp perl-ExtUtils-CBuilder perl-ExtUtils-Embed
sudo git clone https://github.com/vim/vim.git
cd vim
./configure --with-features=huge --enable-multibyte --enable-rubyinterp
make
sudo make install
03

sed命令行工具

sed(stream editor)是一种流编辑器,能够高效地处理文本流。它将当前处理的行存储在临时缓冲区中,称为“模式空间”,然后用sed命令处理缓冲区中的内容。

基本用法

  • 删除行

    sed '1d' filename  # 删除第一行
    sed '$d' filename  # 删除最后一行
    sed '1,2d' filename  # 删除第一行到第二行
    
  • 打印行

    sed -n '1p' filename  # 显示第一行
    sed -n '$p' filename  # 显示最后一行
    sed -n '/pattern/p' filename  # 显示包含pattern的所有行
    
  • 添加和插入行

    sed '1a new_line' filename  # 在第一行后添加new_line
    sed '1i new_line' filename  # 在第一行前插入new_line
    
  • 替换内容

    sed 's/old/new/' filename  # 替换每一行的第一个old为new
    sed 's/old/new/g' filename  # 替换每一行所有old为new
    
04

awk文本处理语言

awk是一种强大的文本处理语言,特别适合处理结构化数据。它可以从输入流中读取数据、排序、计算以及生成报告。

基本用法

  • 切割字段

    awk -F ':' '{print $1}' /etc/passwd  # 以冒号为分隔符,打印第一列
    
  • 条件选择

    awk '$1 == "root"' /etc/passwd  # 打印第一列等于root的行
    
  • 计算和格式化输出

    awk '{sum+=$1} END {print sum}' numbers.txt  # 计算第一列的总和
    
05

实战案例:修改文件的最后一个字节

假设我们需要将一个文件的最后一个字节修改为0,同时保持文件的修改时间(mtime)不变。这个需求可以通过结合使用dd命令和touch命令来实现。

  1. 使用dd命令修改最后一个字节:
dd if=/dev/zero of=yourfile bs=1 count=1 seek=$(( $(stat -c %s yourfile) - 1 )) conv=notrunc

这里的关键是conv=notrunc选项,它确保文件的其余部分不被截断。

  1. 使用touch命令恢复原始的时间戳:
original_mtime=$(stat -c %y yourfile)
touch -d "$original_mtime" yourfile

这个案例展示了如何综合运用多个命令行工具来完成复杂的文件编辑任务。

06

总结

在CentOS 7中,vi/vim、sed和awk等工具各有优势:

  • vi/vim适合进行复杂的文本编辑操作,尤其是需要交互式编辑的场景。
  • sed适用于自动化文本处理和转换,特别适合批量处理。
  • awk在处理结构化数据和生成报表方面表现出色。

在实际工作中,根据具体需求选择合适的工具,可以显著提高工作效率。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号