linux命令行学习

awk ~ 匹配符

在pattern部分进行字段匹配操作。文中包含bin的很多,但要找到以:分割后,第五个匹配bin的用户名,相当于用:将每行分割成数组,索引5值匹配,则将第一个打印出来

awk -F: '$5 ~ /bin/{print $1}' /etc/passwd

awk NR条件语句

在{}进行判断,如果是第二行,打印该行

判断第四个字段值大于500,打印一段话,否则打印一段话。注意语句块必须卸载花括号中

awk -F: '{if($4>500){print $1 "is high"} else {print $1 "is low"}}'  /etc/passwd

awk for循环

对每一行的每一列,进行打印

 

 sed 追加

-i 表示编辑,否则控制台打印,不写入文件

a 表示追加,后面跟反斜杠

比如在以How开始的段后追加 i am a student

执行 sed -i  '/^How*/a    i am a student'  文件,前面四个空格符合python语法

sed 获取[] 之间的内容

[xyz]是任何x,y,或z的字符。

[^xyz]是相反的,即不是x,y,或z的任何字符。

sed  '{s/[^[]*[//;s/[]].*//}' 使用两次s/**/**/, {s/[^[]*[//表示将任何非[ 0个或多个和[ 即12[移除掉,s/[]].*//表示将]和其后面的一个或多个字符移除,掐头去尾,从而获取[]中间的字符串

[^[].*[ 匹配 12[caesar] ,从而获取第二个[]中内容

printf

格式化打印,printf   格式化格式  变量

%ns  n为数字即空格数量,默认使用右对齐

%-ns n为数字即空格数量 ,-使用左对齐

在awk中 printf中,格式化格式和变量之间需要加上逗号

 

在awk循环打印中,for...in...对数组中元素忽略顺序,在for i++循环中,是按照顺序输出

单引号和双引号

'  '关闭所有的meta,

“    ”关闭大多数meta,除了$ , ` ` , 对$和` `中的shell command执行,awk用{ }来区分命令段,在awk中如果直接使用{ },没有被shell关闭,会报错,shell中的$也关闭,也就是$需要成为awk的meta

 $()和 `  `

相同点,都是对其中的shell command进行解释执行,` `会进行对此解释执行,$()只会进行一次解释执行,但是$()中可以使用` `,而 ` `中不能使用。

从shell的可读性角度,推荐使用$()

 sort排序

sort排序,对文档中每行进行排序,默认使用字符的阿斯克码排序,使用-n 参数实现数字排序。

阿斯克码排序123在34前面,因为1在3前面。如下

-t 和-k 参数

-t 参数为分割符, -k 加某个列数,表示按照第某列进行排序。

默认使用第一列排序,在指定使用空格分割,以第二行进行排序后,结果见下,2可以带n参数,表示以数字排序,下面以第二列的阿斯克码排序。

cut 分割字符

-d delimiter 分割符

-f fileds 进行显示的列书,与awk相似,但awk更强大。

 awk求一列值平均值

 使用tr -s ' '去除空行,对第一列的数字求平均值

 cat source.txt |tr -s '
' |awk '{sum +=$1}END{print sum/NR}'

对第二列的数字求平均值

在vim中格式化json字符串

 在python 2.6以后,python提供json.tool可以方便地将json格式化。在vim中执行命令

vim打开json数据,命令行模式下

:%!python -m json.tool

%表示针对全部的行范围,

!调用linux命令,并将输出结果覆盖当前文本(注意!和执行的命令第一个字符中间不要有空格)

在vim中通过 ctrl+v 进行快编辑,使用 h+j+k+l 左下上右 进行操作,比如对代码添加#

a.选中一列                                                                                            b. shift+i 插入 #                                                                              c.Esc退出,即加上所有#

         

使用shift +v 进入行可视化编辑

使用y 复制,使用p进行黏贴

在vim中进入编辑状态

使用i 进入插入状态,但是习惯使用o 在该行下面添加一行,并进入插入状态,使用O在上边插入一行

I:在行首并插入状态

A: 在行末并插入状态

w : 一个单词一个单词向前跳,b: 一个单词一个单词向后跳

cw: change word,修改一个单词

cl: change line,修改一行,等同于使用cc: change the entire line

x 进行剪切,p 进行黏贴

y进行复制,p进行黏贴

:set shiftwidth=4 设置缩进长度为4,vim中默认是8. 设置后,在可视化下,使用shift > 和shift < 进行缩进。

 ln and unlink

建立软连接,ln -s srcfile dstfile 对srcfile 文件或者文件夹建立软连接,dstfile可以自定义名称

移除软连接 unlink dstfile

 

从文件绝对路径获取文件名basename

 time

date +%s 当前时间转化为秒数

date -s @秒数, 将秒数转化为时间

 

原文地址:https://www.cnblogs.com/CaesarLinsa/p/9887118.html