D.H.Q的烂笔头

Just code for fun~

Articles about: shell

linux命令学习 -- awk

awk 是一个功能强大的文本处理工具,常用于数据结构分析和数据格式化输出。不过它更多像是一种解析型编程语言,因为它有自己的变量、条件表达式、循环,以及算术运算和字符操作,你可以用它的语法规则来写一些对数据进行复杂操作的 awk 脚本。它的命名来自于它的三位创始人姓氏的首个字母:Alfred AhoPeter WeinbergerBrian Kernighan

awk 的用法格式

awk '/查询表达式/ {操作指令}' 文件
  • 查询表达式是一个正则表达式
  • 操作命令 - 符合 awk 语法规则的表达式
  • 文件 - 被操作的文件(也可以是标准数据输出)
  • 用单引号括着的 awk 操作表达式是为了避免 shell 的一些特殊字符不被解释分析

继续阅读 »

Linux/Unix 的目录文件权限

在 Linux/Unix 下,如果想知道目录文件的权限分配,可以用 ls 命令查看:

ls -l

一般情况都会输出类似以下的结果(假设当前目录有以下文件或文件夹):

-rw-r--r--    1 dengjoe  staff    608  1  9 20:02 Emakefile
-rw-r--r--    1 dengjoe  staff   1473  1  9 20:02 GNUmakefile
-rw-r--r--    1 dengjoe  staff     51  1  9 20:02 Makefile
-rw-r--r--    1 dengjoe  staff   1393  1  9 20:02 README.md
drwxr-xr-x    3 dengjoe  staff    102  1  9 20:02 bin
drwxr-xr-x   13 dengjoe  staff    442  1  9 20:02 deps
drwxr-xr-x  561 dengjoe  staff  19074  3 31 10:06 ebin
drwxr-xr-x   10 dengjoe  staff    340  1  9 20:02 include
drwxr-xr-x   47 dengjoe  staff   1598  1  9 20:02 modules
drwxr-xr-x   16 dengjoe  staff    544  1 15 15:35 priv
drwxr-xr-x   19 dengjoe  staff    646  1  9 20:02 src
-rwxr-xr-x    1 dengjoe  staff    287  1  9 20:02 start.sh

拿 start.sh 来说,它的文件信息是:

-rwxr-xr-x    1 dengjoe  staff    287  1  9 20:02 start.sh

对应的每一列指的是:

-rwxr-xr-x  :   权限 
1           :   链接数(文件就是1,文件夹的话就是 ls -a 的列出的条数)
dengjoe     :   该文件的拥有者
staff       :   该拥有者所在的用户群组
287         :   文件大小
1  9 20:02  :   最后修改时间
start.sh    :   文件名

继续阅读 »

linux命令学习 -- sed

sed(streams editor) 是一个文件处理的编辑器,具有对文件数据进行新增、替换、删除、打印、取代特定行数据等功能。它本身是一个管道命令,操作文件数据时,先把文件数据的每一行数据放在一个临时的缓冲区,然后再执行指定的操作,最后处理完再把数据显示输出。如果没有指定直接修改的选项,sed是不会改变文件的数据。

sed 的用法格式:

sed [选项] '操作命令' 被操作的文件

例如有一个test.txt的文件,内容如下:

a
b
c
d
e
$
abcdefghijklmnopqrstuvwxyz

想删除文件里的第2和第3行,可以这样写sed:

sed -e '2,3d' ./test.txt

可以看到,文件text.txt原来第2和第3行的数据"b"、"c"是不会显示出来。上面“-e”是选项,“'2,3d'”是操作命令(命令要以两个引号''括住),“./test.txt”是要被操作的文件。

常用的sed选项:

  • -n : (或--quiet或--silent)安静(silent)模式,只显示操作命令处理后的数据,例如要显示第2和第3行数据,可以对比查看“sed -n '2,3p' ./test.txt”跟“sed '2,3p' ./test.txt”的输出区别
  • -e : 后跟操作命令(script),表示以指定的操作命令来处理输入的文件数据,例如上面的:sed -e '2,3d' ./test.txt
  • -f : 把sed的操作命令写在一个文件里, 例如:sed [选项] -f scriptfile filename,-f scriptfile则可以执行scriptfile内的sed操作命令
  • -r : sed的动作支援的是延伸型正则表达式的语法。(预设是基础正则表达式语法)
  • -i : 直接修改读取的文件数据,而不是在屏幕上输出
  • -h : (或--help)显示帮助
  • -V : (或--version)显示版本信息

更多的sed选项信息可以"sed -h"输出查看。

继续阅读 »
返回顶部