Linux常用命令11Linux文本处理示例

0.AWK常变量含义

常变量名 含义
ARGC 命令行变元个数
ARGV 命令行变元数组
FILENAME 当前输入文件名
FNR 当前文件中的记录号
FS 输入域分隔符,默认为一个空格
RS 输入记录分隔符
NF 当前记录里域个数
NR 到目前为止记录数
OFS 输出域分隔符
ORS 输出记录分隔符

1、统计文本中单词数量,并进行排序

grep -Eo "[a-z|A-Z]+" words.txt|awk '{word_cound[$1]++}END {for(aword in word_cound){print aword,word_cound[aword]|"sort -rn -k2"}}'

2、电话号码验证
规则:
A、(xxx) xxx-xxxx
B、xxx-xxx-xxxx

grep -Eo '^(\([0-9]{3}\) |[0-9]{3}-)[0-9]{3}-[0-9]{4}$' phonelist.txt

3、行列转换

awk '{for(i=0;++i<=NF;)t[i]=t[i]?t[i] FS $i:$i}END {for(i=0;i++<NF;)print t[i]}'  transport.txt

4、输出第10行

awk 'NR==10{print}' tenth.txt

Linux常用命令10Vim常用操作

0.基本操作
0.1多行复制
0.1.1、复制方法一
A、将光标移动到要复制的起始行
B、如果复制1行,则按下yy,如果是复制n行,则按下nyy
C、光标移动到粘贴地点,按下p

0.1.2、复制方法二
A、ESC,:进入命名模式
B、start_line_no,end_lin_no co target_line_no

0.1.3、复制方法三(方法二+标签)
A、将光标移动到要复制的起始行,输入ma
B、将光标移动到要复制的结束行,输入mb
C、将光标移动到要复制的目标行,输入mc
D、ESC,:进入命名模式
E、’a,’b co ‘c

0.1.4、剪切方法一
A、将光标移动到要剪切的起始行
B、如果剪切1行,则按下dd,如果是剪切n行,则按下ndd
C、光标移动到粘贴地点,按下p

0.1.5、剪切方法二
A、ESC,:进入命名模式
B、start_line_no,end_lin_no m target_line_no

0.1.6、剪切方法三(方法二+标签)
A、将光标移动到要剪切的起始行,输入ma
B、将光标移动到要剪切的结束行,输入mb
C、将光标移动到要剪切的目标行,输入mc
D、ESC,:进入命名模式
E、’a,’b m ‘c

1.正则表达式
1.1.行首、行尾及空格
1.1.1 符号具体含义

^表示行首
$表示行尾
\s表示空格

1.1.2 应用举例

在全局范围内删除开始空格
:%s/^\s\+/

删除末尾空格
:%s/\s\+$/

删除空行
:g/^$/d

删除空白行
:g/^\s\+$/d

删除-开始的行
:g/^-/d

2.Table与空格互转
2.1、空格转TAB

:set ts=8
:set expandtab
:%retab!

2.2、TAB转空格

:set ts=8
:set noexpandtab
:%retab!

3.删除重复行
3.1、方法一

先排序
:sort
然后删除的重复项的后面一项
:g/\%(^\1$\n\)\@<=\(.*\)$/d

3.2、方法二

先排序
:sort
然后删除重复项的前面一项
:g/^\(.*\)$\n\1$/d

3.3、方法三

先排序
:sort
然后将所有重复记录替换为第一条
:%s/^\(.*\)\(\n\1\)\+$/\1/

4.奇偶行
4.1、删除奇数行

%s/\(^.*$\)\n\(^.*$\)/\1

4.2、删除偶数行

%s/\(^.*$\)\n\(^.*$\)/\2

4.3、奇偶行合并,以tab分隔

%s/\(^.*$\)\n\(^.*$\)/\1\t\2

%s/\n\(.*\n\)/\t\1

5.生成行号
5.1、方法1

:r !seq 1 100

5.2、方法2

:let n=0 | g/^/s//\=n/|let n+=1 

6、每行首字母大写

%s/^\([a-z]\)/\U\1/

Linux常用命令09tar压缩解压文件

1、压缩文件

#只归档不压缩
tar –cf OUT_FILE_NAME.tar PATH_TO_FOLDER
#归档后用gzip压缩
tar –czf OUT_FILE_NAME.tar.gz PATH_TO_FOLDER
#归档后用bzip2压缩
tar –cjf OUT_FILE_NAME.tar.bz2 PATH_TO_FOLDER
#归档后用compress压缩
tar –cZf OUT_FILE_NAME.tar.Z PATH_TO_FOLDER

2、解压文件

#解压tar
tar –xvf IN_FILE_NAME.tar
#解压tar.gz
tar -xzvf IN_FILE_NAME.tar.gz
#解压tar.bz2
tar -xjvf IN_FILE_NAME.tar.bz2
#解压tar.Z
tar -xZvf IN_FILE_NAME.tar.Z

Linux常用命令08cp命令强制覆盖文件

最近,用cp命令拷贝文件夹时,发现即使用了-f选项,覆盖文件夹时,仍然要一个文件一个文件的确认,吐血啊。

后来发现,我调用的cp命令其实是一个别名,用alias命令就可以看到了。

alias cp=’cp -i’

额,系统为了安全,默认强制大家在覆盖前,逐个进行确认。知道了原因,那解决问题就简单了。

方法一、用管道,对每个提醒直接进行确认

yes|cp -fr src dest

方法二、取消别名

unaslias cp 

方法三、强制使用cp命令,而不是使用别名

\cp -fr src dest 

Linux常用命令06设置环境变量

设置环境变量,主要看你用的shell是哪一种:

echo $SHELL

比如我们要把/usr/xbin路径,添加到当前用户的PATH中去:
sh:
~/.shrc

PATH=${PATH}:/usr/xbin
export PATH

bash:
~/.bashrc

export PATH=${PATH}:/usr/xbin

csh,tcsh:
~/.cshrc,~/.tcshrc

set path=($path /usr/xbin)

Linux常用命令05scp上传及下载文件

1、从服务器上下载文件

scp username@servername:/remote_path/remote_filename /local_path

2、上传本地文件到服务器

scp /local_path/local_filename username@servername:/remote_path   

3、从服务器下载整个目录

scp -r username@servername:/remote_path/remote_foldername /local_path

4、上传目录到服务器

scp -r /local_path/local_foldername username@servername:/remote_path

Linux常用命令04网络基本操作

1、Debian安装及卸载软件

sudo apt-get install ssh
sudo apt-get remove ssh

2、重启网络(方法一)

ifconfig eth0 down
ifconfig eth0 up

3、重启网络(方法二)

/etc/init.d/networking restart

4、刷新机器名

/etc/init.d/hostname.sh start

5、刷新环境变量

source /etc/profile

Linux常用命令03挂载及硬件信息

1、挂载NTFS文件系统:

mount -t ntfs-3g /dev/sdb1 /mnt/winc -o force   

2、挂载VirtualBox共享目录:

mount -t vboxsf 共享名称 /mnt/vbshare/

3、改变目录及文件所属

chown -R usergroup:user path_to_folder

4、查找

find path -name filename
find path -type f -exec grep -l - l stringtofind {} \;

5、枚举文件夹下文件大小

du -h

6、查看文件夹大小

du -sh

7、查看硬盘使用情况

df -lh

8、查看内存使用情况

vmstat
free -m

Linux常用命令02压缩及解压

#.tar
tar xvf FileName.tar
tar cvf FileName.tar FolderName

#.gz
gzip -d FileName.gz
gzip FileName

#.tar.gz
tar zxvf FileName.tar.gz
tar zcvf FileName.tar.gz FolderName

#.bz2
bzip2 -d FileName.bz2
bzip2 -z FileName

#.tar.bz2
tar jxvf FileName.tar.bz2
tar jcvf FileName.tar.bz2 FolderName

#.Z
uncompress FileName.Z
compress FileName

#.tar.Z
tar Zxvf FileName.tar.Z
tar Zcvf FileName.tar.Z FolderName

#.zip
unzip FileName.zip
zip -r FileName.zip FolderName