轻松解决:利用Linux过滤掉空格的方法 (linux过滤掉空格)

在Linux系统中,空格常常是个头疼的问题。无论是文件名中的空格、路径中的空格,还是文本中的空格,都可能会造成各种问题,如无法正常访问文件、无法执行命令、无法解析变量等等。因此,如何过滤掉空格,成为了Linux系统管理员和开发人员经常面临的一项任务。本文将介绍几种利用Linux过滤掉空格的方法,帮助读者轻松解决这个问题。

方法一:使用双引号

在Linux系统中,使用双引号是一种最简单、最直观的方法来过滤掉空格。例如,如果你要打印一个文件名带空格的文件,可以使用以下命令:

“`bash

$ echo “my file.txt”

“`

这里,使用了双引号将文件名括起来,这样就能够正确地输出文件名,而不会将空格作为分隔符。

同样的,这种方法也可以用于其他需要过滤空格的场合,如使用变量或命令参数中含有空格的情况。例如:

“`bash

$ myvar=”my file.txt”

$ touch “$myvar”

“`

这个例子中,使用了双引号将变量$myvar括起来,以正确创建文件名带空格的文件。

方法二:使用单引号

除了双引号外,单引号也是一种可供选择的方法来过滤空格。与双引号不同的是,单引号中的所有字符都会被当做字符串的一部分,不会被解析成特殊字符。因此,单引号可以用于保留字符串原始格式,如下所示:

“`bash

$ echo ‘my file.txt’

“`

如果在单引号中需要插入单引号字符本身,可以使用双引号将其括起来,如下所示:

“`bash

$ echo ‘She sd: “Hello!”‘

“`

这个例子中,单引号包裹着整个字符串,但其中包含有双引号字符。为了保留这个字符,需要使用双引号将其括起来。

方法三:使用转义字符

在Linux系统中,还可以使用转义字符来过滤掉空格。转义字符是指以反斜杠(\)开头的字符,它告诉系统该字符后面的字符不是特殊字符,而是普通字符。例如,如果你要创建一个带空格的文件,可以使用以下命令:

“`bash

$ touch my\ file.txt

“`

在这个例子中,使用了反斜杠来转义空格字符,以正确创建文件名带空格的文件。

同样的,转义字符也可以用于其他需要过滤空格的场合,如在命令参数中使用带空格的字符串。例如:

“`bash

$ echo “She sd: \”Hello!\””

“`

这个例子中,使用了双引号将整个字符串括起来,并使用反斜杠来转义其中的双引号字符,以正确输出字符串。

方法四:使用通配符

在Linux系统中,还可以使用通配符来过滤掉空格。通配符是指用于匹配、查找文件等操作的字符,如星号(*)、问号(?)等。如果你想要查找文件名中带有空格的文件,可以使用以下命令:

“`bash

$ ls *’ ‘*

“`

这个命令中,星号(*)匹配任意字符,加上单引号和空格组成了空格的表示方法,从而正确匹配含有空格的文件。

同样的,通配符也可以用于其他需要过滤空格的场合,如使用带空格的变量或命令参数。例如:

“`bash

$ myvar=”my file.txt”

$ mkdir ${myvar// /_}

“`

这个例子中,使用了一种高级字符串替换方法,将变量$myvar中的空格替换成下划线(_),从而正确创建带空格的目录名。

结语

通过本文介绍的以上几种方法,读者可以轻松解决Linux系统中的空格过滤问题。在使用这些方法时,需要特别留意变量、命令参数等场合,确保空格不会被系统解析成不该解析的字符。此外,在实际使用过程中,还可以根据需要结合不同方法来处理空格问题,以达到更好的效果。

相关问题拓展阅读:

Linux 常用命令(要求全而精)

1、linux分区

–在linux里面所有的设备、任何东西,在linux看来都是文件。

–文件在它看来,有两种形式:

之一种是字符型(键盘输入、打印机);

第二种是二进制型(硬盘、光驱、U盘滑让森)

–linux中所有硬件

–手动分区

–A、至少有两个分区

/ 根分区

SWAP 交换分区(物理内存大小的两倍)

–B、个人桌面分区

/

/boot 128MB is enough

/usr

SWAP

/tmp(用于光盘刻录)

2、linux目录说明

–/dev/xxyN

–xx (分区所在设备类型:hd–IDE硬盘 sd–SCSI硬盘)

–y (标明分区所在设备

例如:/dev/hda 之一个IDE硬盘 或 /dev/hdb 第二个IDE硬盘 或 /dev/sdb 第二个SCSI硬盘)

–N (数字代表分区:1-4–主分区或扩展分区;逻辑分区从5开始!

例如:/dev/hda3 之一个IDE硬盘上的第三个主分区或扩展分区

/dev/sdb6 第二个SCSI硬盘上的第二个逻辑分区)

3、linux目录结构

/ 根目录,更高级别

/bin 系统基本命令存放目录(/usr/bin)

/boot linux的内核及引导系统程序文件存放目录(如:vmlinuz、initrd.img)

一般情况下,GRUB或LILO系统引导管理也位于这个目录

/dev 设备文件存储目录,如声卡、光驱…

/ect 存放系统设置文件(如用户账号密码、服务器配置文件等)

/home 普通用户家目录,默认存放目录

/lib 库文件存放目录

/lost+found 在ext2或ext3文件系统中,当系统以外崩溃或机器意外关机,而产生一些文件碎片放在这里。

当系统启动的过程中,fsck工具会检查这里,并修复已经损坏的文件系统。

有事喜用发生问题,有很多的文件被移到这个目录中,可能会用手工的方式来修复,或者移文件到原来的位置上。

/media 即插即用型存储设备的挂载点自动在这个目录下创建。

如USB盘系统自动挂在后,会在这个目录下产生一个目录;

类似cdrom的目录

/mnt 存放挂载存储设备的挂载目录,如cdrom等目录

/opt 表示可选的意思,有些软件包也会被安装在此,也就是自定义软件包,

比如OpenOffice,或者一些我们自己编译的软件包,也可安装此处。

/proc 操作系统运行时,进程(正在运行的程序)信息及内核信息(比如CPU、硬盘分区、内存信息等)存放在此。

/proc目录是伪装的文件系统proc的挂载目录,proc并不是真正的文件系统

/root linux超级权限用户root的家目录

/in 大多是涉及系统管理的命令的存放,只有超级权限用户root才可执行命令存放,普通用户无权限执行此目录下的命令

与 /usr/in; /usr/X11R6/in; usr/local/in 目录相似

(in,只有root权限才能执行)

/tmp 临时文件目录,有时用户滑首运行程序的时候,会产生临时文件。

/var/tmp目录和此目录相似

/usr 系统存放程序的目录,如命令、帮助文件等。这个目录下有很多的文件和目录。

大部分Linux发行版提供的软件包都安装在此,涉及服务器的配置文件就安装在/ect中。

/usr/share/fonts 字体目录

/usr/share/man 或 /usr/share/doc 帮助目录

/usr/bin 或 /usr/local/bin 或 /usr/X11R6/bin 普通信亩用户可执行文件目录

/usr/in 或 /usr/local/in 或 /usr/X11R6/in 超级权限用户root可执行命令存放目录

/usr/include 程序头文件存放目录

/var (vary)此目录经常变动

/var/log 用来存放系统日志

/var/www 用来定义Apache服务器站点存放

/var/lib 用来存放一些库文件,如MySQL的,以及MySQL数据库的存放地。

4、基本命令

–查看帮助 –help –?

–查看详细帮助 man

–登录 login

–退出窗口 exit

–关机 shutdown

–重启 reboot

–初始化 init (run level -/etc/inittab),0-6看第六部分的g

–进入根目录 cd /

–回上层目录 cd ..

–相对路径 cd dev

–绝对路径 cd /dev

–查用户名 whoami

–查当前目录 pwd

–列出当前目录内容 ls

l(树详细显示目录内容)

m(横列显示目录内容,是屏幕长度显示)

a(列出全部文件,包括隐藏文件)

S(以文档大小排序)

–创建目录 mkdir dname

–删除目录 rmdir dname

rm -r-(递归删除该目录下所有内容,询问每个准备删除的文件)

rm -rf ***-(强制删除该目录下所有内容,不询问)

–创建空白文件 touch

(ps:从技术的角度来讲,linux的文件后缀名没有任何意义)

–复制 cp

cp -r **1 **2 (复制1到2中)

–移动 mv

mv -t **1 **2 (把2移动到1中)

–编辑文本 vi

–查看文本 cat 由之一行开始显示文本内容

tac 从最后一行显示,可以看出 tac 是 cat 的倒着写

more 一页一页的显示文档内容

less 与 more 类似,可以往前翻页

head 只看头几行

N(数字,可根据行数显示)

tail 只看后几行

N(数字,可根据行数显示)

nl 显示的时候,顺序输出行号

od 以二进制位的方式读取档案内容

–查找文本 find

如查找rc.local find /etc -name *.local

–查找命令信息及其位置 whereis 命令

如 whereis ls

–查看环境变量 echo $SHELL

如 echo $PATH (分大小写:分隔符是:,windows是echo %path%;)

–链接 ln

如 ln joe.txt a (硬链接,如同复制一个新文件,joe.txt删除后,a还存在)

a是链接的名称,a和joe.txt同步,然后a的内容和joe.txt一样

joe.txt改变,a也跟着变

如 ln -s joe.txt b (软链接,如同创建一个快捷方式,joe.txt删除后,b不存在)

–wc 统计指定文本文件的行数、字数、字符数

–grep(很常用) 在指定的文本文件中查找指定的字符串

grep 字符串 文件名

–col 见管道..

—-信息显示命令—-

–date 显示和设置日期

–stat 显示指定文件的相关信息

–who、w 显示在线登录用户

–whoami 显示用户自己的身份

–id显示当前用户的id信息

–hostname 显示主机名称

–uname 显示操作系统信息

–dmesg 显示系统启动信息

–du显示指定的文件(目录)已使用的磁盘空间

–df显示文件系统磁盘空间的使用情况

–free 显示当前内存和交换空间的使用情况

–fdisk -l 显示磁盘信息

–locale 显示当前语言环境

5、挂载点(mount 设备目录 挂载目录)

–访问设备 (那设备当成一个文件,和另外一个文件夹进行绑定)

–例如挂载光驱:步骤 ———–OK!直接访问光驱内容

–卸载挂载设备(umount /dev/cdrom)–注意必须先退出挂载目录,否则出现”device is busy”错误.

6、startup-shutdown(linux启动流程)

–A、boot sequence(important) linux启动过程

a. load bios(hardware information)

b. read MBR’s config to find out the OS

(MBR–Master Boot Record,硬盘之一个物理扇区,柱面0、磁头0、扇区1,包含主引导程序和硬盘分区表)

c. load the kernel of the OS

(加载为kernel核心的OS)

d. init process starts…

(启动linux之一个进程init)

e. execute /etc/rc.d/sysinit

(执行系统最重要的配置文件,后台启用进程)

(rc.d–run command)

f. start other modules(stc/modules.conf)

(开启各种模块,如内存管理模块、硬盘管理模块)

g. execute the run level scripts

(系统启动是分层次的,根据情况执行,每个层次之间没关系)

0 – 系统停机状态

1 – 单用户工作状态 root

2 – 多用户状态(没有NFS)

3 – 多用户状态(有NFS)

NFS – Network File System 网络文件系统,联网系统

4 – 系统未使用,留给用户

5 – 图形界面

6 – 系统正常关闭并重新启动

如:cd /etc — 有rc0.d、rc1.d、rc2.d、rc3.d、rc4.d、rc5.d等多个文件夹,保存着各个层次执行的进程文件

h. execute /etc/rc.d/rc.local (重要)

(保存其它进程脚本,如tomcat自动启动,要修改此配置文件)

i. execute /bin/login

(登录界面)

j. shell started…

7、vi 文本编辑器

–两种模式:命令模式 编辑模式

–vi

(切换到编辑模式)

a append-光标后添加

i insert-光标前插入

o open-另起一行编辑

esc (切换回命令模式)

:w 存盘

:wq 存盘退出

:q 退出

:q! 不存盘退出

dd 删除其中一行

dw 删除一个单词

(sudo gedit 文本 常用linux下的文本编辑器,比vi好用)

8、用户设置

–切换用户(switch user) su username

小技巧:直接exit切换

–添加用户 useradd username (分配到某个用户组)

(创建后会自动在/home目录下创建该新用户的文件夹,如/home/username)

–设置密码 passwd username

–cd /etc

–查看用户信息 more password

如新增的用户信息:username:x:500:500::/home/username:/bin/bash

之一个数字,代表用户组,当添加用户没有指定用户组时,系统会创建一个和用户ID一样的组ID;

第二个数字:用户ID号;

用户的目录是/home/username;

用户的SHELL是/bin/bash

(命令—>SHELL—>kenrel内核)

SHELL有多种类型,如csh、bash(常用)、bsh、ksh、sh(最原始)

–添加用户组 groupadd groupname

–查看用户组信息 more group

–删除用户组 groupdel groupname

–修改用户 usermod

–删除用户 userdel username

然后把/home的文件夹删除了 rm -rf 文件夹

9、权限file privilege

–linux把文件的权限分成四种:r:read w:write x:execute -:none

如:-rw-r–r–

lrwxrwxrwx

drwxr-xr-x

drwxr-xr-x

之一个数字’-‘代表文件,其余是文件夹,后9位分为3组,每组有四种权限设置rwx-

之一位表示文件所有者

第二位表示和所有者在同一用户组的用户

第三位表示不在同一用户组的用户权限

–设置权限 (随意应用,灵活组合!)

1、普通用法

–添加权限

如:-rw-r–r– —> -rwxr-xr-x

–删除权限

如:-rwxr-xr-x —> -rw-r–r–

–给自己添加权限

如此类推,组–g,其他人–o

如:chmod u+x -rw-r–r– —> -rwxr–r–

chmod g+x -rw-r–r– —> -rw-r-xr–

chmod o+x -rw-r–r– —> -rw-r–r-x

2、专业用法 chmod 755/777

–原理,八进制转二进制

如755,, rwx r-x r-x

,, rwx rwx rwx

–修改所有者权限 chown (change owner)

如:chown 原来文件 file1 的所有者是 root,改成joe的

chown joe file1

10、管道(把上一个命令执行的结果交给下一个命令)

–使用方法:

命令1|命令2|命令3……|命令n

–使用举例

$ls -Rl /etc | more

(如 ls -Rl /etc (在控制台模式下,无法返回前面过去的信息),因此需要管道执行该查询,实现分页的工作, ls -Rl /etc | more)

$cat /etc/passwd | wc

(显示文件结果,再数数有多少行)

$cat /etc/passwd | grep lrj

(显示文件结果,再查找包含lrj的行)

#dmesg | grep eth0

(显示系统启动的信息,再查找包含eth0的行–真正含义,检查网卡执行信息是否正常)

$man bash | col -b > bash.txt

语  法:col

补充说明:在许多UNIX说明文件里,都有RLF控制字符。当我们运用shell特殊字符”>”和”>>”,把说明文件的内容输出成纯文本文件时,控制字符会变成乱码,col指令则能有效滤除这些控制字符。

参  数:

b 过滤掉所有的控制字符,包括RLF和HRLF。

f 滤除RLF字符,但允许将HRLF字符呈现出来。

x 以多个空格字符来表示跳格字符。

l 预设的内存缓冲区有128列,您可以自行指定缓冲区的大小。

$ls -l | grep “^d”

(用正则表达式筛选出目录列表中 头字母为’d’ 的内容–目录)(^是正则表达式开头部分)

$ls -l * | grep “^-” | wc -l

(列出目录列表中 头字符为’-‘的内容–文件,并统计显示的行数wc -l)

11、其他命令

–wall(warning all) 通知所有人

a.命令替换

如 wall `date`、 cd ‘pwd’、mkbootdisk $(uname -r)

b.重定向

重定向输出:

如 ls > cmd.txt ,把文件写到cmd.txt,不输出在控制台

ls >> cmd.txt ,把文件追加写到cmd.txt

重定向输入:

如 wall > cmd.txt,把文本内容发给所有人

12、修改系统的默认系统级别

常用3和5

3 – 多用户状态(有NFS)

NFS – Network File System 网络文件系统,联网系统

5 – 图形界面

PS.设置用户权限: sudo chmod 777 目录

4表示读,2表示写,1表示执行.

之一位表示文件所有者,第二位表示和所有者在同一用户组的用户,第三位表示不在同一用户组的用户权限.

755表示文件所有者可读写,执行.

第二位5表示与所有者在同一用户组的可读,可执行,不可写.

第三位5表示其它组可读,可执行,不可写. 转载于Joewalker在本人空间也有详细说明

自己进去看历滑段看肢誉让雹吧,貌似自己可以下载下来

1)文件操作

vi FileName 打开文件 FileName,并将光标置于之一行首。

vi +n FileName 打开文件 FileName,并将光标置于第 n 行首。

vi + FileName 打开文件 FileName,并将光标置于最后一行。

vi + /pattern File 打开文件 File,并将光标置于其中之一个于 pattern 匹配的字符串处。

vi –r FileName 在上次正用 vi 编辑 FileName 发生系统崩溃后,恢复FileName。

vi File1 … Filen 打开多个文件,依次对之进行编辑。

:%!xxd 按十六进制查看当前文件

:%!xxd -r 从十六进制返回正常模式

:n1,n2 co n3 将 n1 行到 n2 行之间的内容拷贝到第 n3 行下。

:n1,n2 m m3 将 n1 行到 n2 行之间的内容移至第 n3 行下。

:n1,n2 d 将 n1 行到 n2 行之间的内容删除。

:n1,n2 w filename 将 n1 行到 n2 行之间的内容保存到文件 filename 中

:n1,n2 w! Command 将文件中n1行到n2行的内容作为 Command的输入并执行之,局渣派

若不指定 n1、n2,则将整个文件桐贺内容作为 Command 的输入。

:r! Command 将命令 Command 的输出结果放到当前行。

:nr 文件> 把文件>插入到第n行

:so 文件> 读取文件>,再执行文件里面的命令梁乱(文件中的命令应该都是一些ex命令)

:l1,l2w 文件> 把第l1和第l2行之间的文本写到文件>中去

:w >> 文件> 添加到文件>末尾. 也可以使用行号

:e! 重新编辑当前文件,忽略所有的修改

·(、、)对应显示

% 显示当前(、 、)的对应项

) :光标移至句尾

( :光标移至句首

}:光标移至段落开头

{:光标移至段落结尾

·(、、)内数据选择

daB 删除{}及其内的内容 (在非v可视模式下)

diB 删除{}中的内容

ab 选择()中的内容

ib 选择()中的内容( 不含() )

aB 选择{}中的内容

iB 选择{}中的内容( 不含{} )

·语法提示与自动补齐

★ 插入模式下的单词自动完成

★ 行自动完成(超级有用)

·设置ctags

#ctags -f /usr/share/vim/vim63/funcs.tags -R /opt/j2sdk/src /usr/src/kernels/2.6.9-5.EL-i686

^p 自动补齐上下文已有相近项

^n 自动补齐~/.tags中的相近函数

^

按^t退出函数

:pta 函数名 预览窗口快速打开相应函数所在文件,并将光标定位在对应函数的开头

K 显示光标下的C函数的man说明手册

·变量定位

gd 转到光标下局部变量的定义处

Gd 转到光标下全局变量的定义处

·编译选项

:cn 命令会把你带到下一个出错地点,而不考虑它在什么文件里。

:cc 命令会向你显示当前错误的编译器输出信息;

:cl 会生成一个列有项目所有错误的列表,以供浏览这些错误

3>光标移动

·字符

h 光标左移一个字符。

l 光标右移一个字符。

·字

w 或 W 光标右移一个字至字首。

B 或 b 光标左移一个字至字首。

E 或 e 光标右移一个字至字尾。

·句} 光标移至句尾。

( 光标移至句首。

·段) 光标移至段落开头。

{ 光标移至段落结尾。

·行k 或 Ctrl+p 光标上移一行。

j 或 Ctrl+n 光标下移一行。

Enter 光标下移一行。

nG 光标移至第 n 行首。

n+ 光标下移 n 行。

n- 光标上移 n 行。

n$ 光标移至第 n 行尾。

0 光标移至当前行首。

$ 光标移至当前行尾。

·屏幕

H 光标移至屏幕顶行。

M 光标移至屏幕中间行。

L 光标移至屏幕最后行。

Ctrl+u 向文件首翻半屏。

Ctrl+d 向文件尾翻半屏。

Ctrl+f 向文件尾翻一屏。

Ctrl+b 向文件首翻一屏。

nz 将第 n 行滚至屏幕顶部。不指定 n 时将当前行滚至屏幕顶。

4}插入

# 在文件中插入行号(不是显示行号,是插入!)

★:g/^/exec “s/^/”.strpart(line(“.”).” “, 0, 4)

·光标

i 在光标前插入。

a 在光标后插入。

·行

I 在当前行首插入。

A 在当前行尾插入。

o 在当前行之下一新行插入。

O 在当前行之上新开一行插入。

5)替换

r 替换当前字符。

R 替换当前字符及其后的字符,直至按 ESC 键。

s 从当前光标位置处开始,以输入的文本代替指定数目的字符。

S 删除指定数目的行,并以所输入的文本代替。

6)修改

ncw 或 nCW 修改指定数目的字符。

nCC 修改指定数目的行。

:r filename 将文件 filename 插入在当前行之下

7)查找替换

/ 把狭义单词 写到 搜索命令行

/ 把广义单词 写到 搜索命令行

:g/str/s/str1/str2/g

之一个g表示对每一个包括s1的行都进行替换,

第二个g表示对每一行的所有进行替换

包括str的行所有的str1都用str2替换

:%s/f $/for$/g 将每一行尾部的“f ”(f键和空格键)替换为for

:%s/^/mv /g 在每一行的头部添加“mv ”(mv键和空格键)

:s/fred/a/g 替换fred成register a中的内容,呵呵

:g/显示含或的行

# 替换一个visual区域

# 选择一个区域,然后输入 :s/Emacs/Vim/ 等等,vim会自动进入:模式

:’s/Emacs/Vim/g 前面的’是vim自动添加的

# 在多个文档中搜索

:bufdo /searchstr

:argdo /searchstr

复制与剪切

xp 交换前后两个字符的位置

ddp 上下两行的位置交换

:g/fred/t$ 拷贝行,从fred到文件末尾(EOF)

9)窗口操作

:vne

:sp

:S

:new

:^w + ^r 交换两个窗口的位置

^w = 窗口等宽

:res -n 窗口高度减小n

:res +n 窗口高度增大n

:vert res -n

:vert res +n

10)DOS格式文本转成Unix格式文本

:1,$s/^M//g

11)书签

在阅读和编写大的程序文件时,利用标记(书签)功能定位是十分有帮助的。

将光标移到想做标记的位置。假如做一个名为“debug1”的标记,那么用户可在命令模式下输入做标记的命令“mdebug1”,然后敲入回车键,一个名为“debug1”的标记就做好了。

接下来用户可以随意将光标移到其它的位置,当在命令模式下输入“`debug1”后,就能快速回到“debug1”的标记所在行的行首。

馨竹:13

12)删除操作

:%s/r//g 删除DOS方式的回车^M

:%s= *$== 删除行尾空白

:%s/^(.*)n1/1$/ 删除重复行

:%s/^.pdf/new.pdf/ 只是删除之一个pdf

:%s/// 又是删除多行注释(咦?为什么要说「又」呢?)

:g/^s*$/d 删除所有空行

:g!/^dd/d 删除不含字符串’dd’的行

:v/^dd/d 同上 (译释:v == g!,就是不匹配!)

:g/str1/,/str2/d 删除所有之一个含str1到之一个含str2之间的行

:v/./.,/./-1join 压缩空行

:g/^$/,/./-j 压缩空行

:s/p1/p2/g:将当前行中所有p1均用p2替代

:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代

:g/p1/s//p2/g:将文件中所有p1均用p2替换

ndw 或 ndW 删除光标处开始及其后的 n-1 个字符。

d0 删至行首。

d$ 删至行尾。

ndd 删除当前行及其后 n-1 行。

x 或 X 删除一个字符。

Ctrl+u 删除输入方式下所输入的文本。

^R 恢复u的操作

J 把下一行合并到当前行尾

V 选择一行

^V 按下^V后即可进行矩形的选择了

aw 选择单词

iw 内部单词(无空格)

as 选择句子

is 选择句子(无空格)

ap 选择段落

ip 选择段落(无空格)

D 删除到行尾

x,y 删除与复制包含高亮区

dl 删除当前字符(与x命令功能相同)

d0 删除到某一行的开始位置

d^ 删除到某一行的之一个字符位置(不包括空格或TAB字符)

dw 删除到某个单词的结尾位置

d3w 删除到第三个单词的结尾位置

db 删除到某个单词的开始位置

dW 删除到某个以空格作为分隔符的单词的结尾位置

dB 删除到某个以空格作为分隔符的单词的开始位置

d7B 删除到前面7个以空格作为分隔符的单词的开始位置

d) 删除到某个语句的结尾位置

d4) 删除到第四个语句的结尾位置

d( 删除到某个语句的开始位置

d) 删除到某个段落的结尾位置

d{ 删除到某个段落的开始位置

d7{ 删除到当前段落起始位置之前的第7个段落位置

dd 删除当前行

d/text 删除从文本中出现“text”中所指定字样的位置,

一直向前直到下一个该字样所出现的位置(但不包括该字样)之间的内容

dfc 删除从文本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置(包括该字符)之间的内容

dtc 删除当前行直到下一个字符“c”所出现位置之间的内容

D 删除到某一行的结尾

d$ 删除到某一行的结尾

5dd 删除从当前行所开始的5行内容

dL 删除直到屏幕上最后一行的内容

dH 删除直到屏幕上之一行的内容

dG 删除直到工作缓存区结尾的内容

d1G 删除直到工作缓存区开始的内容

修改命令操作

r 更改当前字符

cw 修改到某个单词的结尾位置

c3w 修改到第三个单词的结尾位置

cb 修改到某个单词的开始位置

cW 修改到某个以空格作为分隔符的单词的结尾位置

cB 修改到某个以空格作为分隔符的单词的开始位置

c7B 修改到前面7个以空格作为分隔符的单词的开始位置

c0 修改到某行的结尾位置

c} 修改到某个语句的结尾位置

c4} 修改到第四个语句的结尾位置

c( 修改到某个语句的开始位置

c) 修改到某个段落的结尾位置

c{ 修改到某个段落的开始位置

c7{ 修改到当前段落起始位置之前的第7个段落位置

ctc 修改当前行直到下一个字符c所出现位置之间的内容

C 修改到某一行的结尾

cc 修改当前行

5cc 修改从当前行所开始的5行内容

. 重复上一次修改!

13}Set 选项设置

set all 列出所有选项设置情况。

set term 设置终端类型。

set ignorecase 在搜索中忽略大小写。

set list 显示制表位(^I)和行尾标志($)。

set number 显示行号。

set showmode 示用户处在什么模式下

set report 显示由面向行的命令修改国的行数目。

set terse 显示简短的警告信息。

set warn 在转到别的文件时,若没有保存当前文件则显示 No write 信息。

set autowrite 在“:n”和“:!”命令之前都自动保存文件

set nomagic 允许在搜索模式中,使用前面不带\的特殊字符。

set nowrapscan 禁止 vi 在搜索到达文件两端时,又从另一端开始。

set mesg 允许 vi 显示其他用户用 write 写到自己终端上的信息。

autoindent (ai) noai 使新行自动缩进,和上(下)行的位置对齐

autoprint (ap) ap 每条命令之后都显示出修改之处

autowrite (aw) noaw 在:n,:!命令之前都自动保存文件

beautify (bf) nobf 在输入的时候忽略所有的控制字符(除了制表键(tab),换行(newline),进纸(formfeed))

directory= (dir=) /tmp 存放缓冲区的目录名

edcompatible noedcompatible 在替换的时候使用类ed的用法

errorbells (eb) errorbells 出错的时候响铃

exrc (ex) noexrc 允许在主目录(home)外面之外放.exrc文件

hardtabs= (ht=) 8 设置硬制表的边界

ignore case (ic) noic 正规式里忽略大小写

lisp nolisp 打开lisp模式

list nolist 显示所有的制表键和行的结尾

magic agic 可以使用更多的正规表达式

mesg mesg 允许向终端发送消息

number (nu) nonumber 显示行号

open open 允许开放和可视化

optimize (opt) optimize 优化吞吐量,打印时不发回车

paragraphs= (para=) IPLPPPQPPLIbp 设置{ & }的分界符

prompt prompt 命令模式下的输入给出:的提示符

readonly (ro) noro 除非用!号否则不准保存文件

redraw noredraw 当编辑的时候重绘屏幕

remap remap 允许宏指向其他的宏

report= 5 如果影响的行数>这个数的话就报告

scroll 1/2 window 下卷屏幕时滚动屏幕的数目, 同样这也是z命令输出的行数(z 输出2倍滚屏的大小)

sections= SHNHH HU 定义节的末尾(当使用命令> 时)

shell= (sh=) /bin/sh 缺省的SHELL,如果设置了环境变量SHELL的话,就使用变量

shiftwidth= (sw=) 8 当使用移动(shift)命令时移动的字符数

showmatch () no 显示{, }, (, ), 的匹配情况

showmode noshowmode 显示你处在什么模式下面

slowopen (slow) 插入之后不要立刻更新显示

tabstop= (ts=) 8 设置制表停止位(tabstop)的长度

taglength= (tl=) 0 重要标记的字符个数(0表示所有的字符)

tags= tag, /usr/lib/tags 定义包含标记的文件路径

term= 设置终端类型

terse noterse 显示简短的错误信息

timeout (to) timeout 一秒钟后键盘映射超时

ttytype= 设置终端类型

warn warn 显示”No write since last change”信息

window= (w=) 可视模式下窗口的行数

wrapmargin= (wm=) 0 右边距,大于0的话最右边的单词将折行,留出n个空白位置

wrapscan (ws) ws 查找到文件尾后再重头开始

writeany (wa) nowa 可以保存到任意一个文件去

14}特殊字符

^ 匹配字符串位于行首。

$ 匹配字符串位于行尾。

. 用在模式串中,表示任何单个字符。

在命令模式下,重复上次的命令。

* 在模式串中,表示其前字符可出现任意多次。

用在模式串中,表示指定方位内字符,其中可用-表示一个字

符范围,用^表示不在某个范围内的字符。

ESC 从插入状态转换到命令状态

^

15>大小写转换

guu 行小写

gUU 行大写

g~~ 行翻转(当然指大小写啦)

guw 字小写(狭义字) 译注:建议对比iw

gUw 字大写(狭义字)

g~w 字翻转(狭义字)

vEU 字大写(广义字)

vE~ 字翻转(广义字)

ggguG 把整个文章全部小写(ft!bt!)

16) 跳转足迹’. 跳到最后修改的那一行 (超级有用)(ft,怎么又是这个评价)

`. 不仅跳到最后修改的那一行,还要定位到修改点

依次沿着你的跳转记录向回跳 (从最近的一次开始)

依次沿着你的跳转记录向前跳

:ju(mps) 列出你跳转的足迹

17)命令历史

:history 列出历史命令记录

:his c 命令行命令历史

:his s 搜索命令历史

q/ 搜索命令历史的窗口

q 命令行命令历史的窗口

: 历史命令记录的窗口

18>寄存器

# 列出寄存器(Registers)

:reg 显示所有当前的registers

“1p 表示引用register,1表示一个名字叫做1的register,p就是粘贴(paste)命令

译释:

“也用来定义register

先输入 “,表示定义register

然后输入名字,如0~9,a~z

然后执行删除或复制命令,如dd或y,

或者是visual模式下的d(删除选中的部分)或y(复制选中的部分)

则被删除或复制的部分就被存入了这个命名的register

观察:一个特殊的register, “” ,里面存储了一个匿名的删除/复制

在你执行dd或y的时候,被作用的部分被存到了””中

19}命令行

“ayy@a 把当前行作为一个Vim命令来执行

译释:”ayy 是定义当前行到register a,然后@a是执行register a中存储的指令

10yy copy 当前行以下10行

11} 排序

:%!sort -u 使用sort程序排序整个文件(用结果重写文件)

!1) sort -u 排序当前段落 (只能在normal模式下使用!!)

:.,+5!sort 排序当前行及以下5行

20) 列操作

:%s= +$=&&= 复制最后一列

:%s= f+$=&&= 一样的功能

:%s= S+$=&& ft,还是一样

:s/(.*).*)/2″1/ 颠倒用:分割的两个字段

:%s(w+s+))str1:1str2: 处理列,替换所有在第三列中的str1

:%sw+)(.*s+)(w+)$:321: 交换之一列和最后一列 (共4列)

·.vimrc

” Use Vim settings, rather then Vi settings (much better!).

set nocompatible

“c风格的缩进

:set expandtab “不使用tab只使用空格

:set cindent shiftwidth=4

“自动缩进

:set ai

“语法

“:set filetype=java

:set syntax=java

“键入)、> 、},显示(、

:set showmatch

“手工定义折叠

:set foldmethod=manual

“标签文件位置

set tags=/usr/share/vim/vim63/funcs.tags

“在插入模式下通过按N自动地将任何类、方法或者字段名补齐

set complete+=k

” 不要用声音烦我!

set visualbell

“历史

:set history=50

“显示行列位置

:set ruler

“设置字符编码

set fileencodings=gb2312

“set encoding=euc-cn

“设置ruler

set ruler

“显示当前命令

set showcmd

“incsearch

set incsearch

” allow backspacing over everything in insert mode

set backspace=indent,eol,start

“自动检测文件类型

:filetype on

linux过滤掉空格的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux过滤掉空格,轻松解决:利用Linux过滤掉空格的方法,Linux 常用命令(要求全而精)的信息别忘了在本站进行查找喔。


数据运维技术 » 轻松解决:利用Linux过滤掉空格的方法 (linux过滤掉空格)