zoukankan      html  css  js  c++  java
  • 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 @秒数, 将秒数转化为时间

     

  • 相关阅读:
    C# 图解教程 第一章 C#和.NET框架
    How I explained OOD to my wife(转)
    ListView 无 DataSource 依然用 DataPager 翻页
    【树莓派】crontab的两个问题
    【CentOS 7】scp示例
    【CentOS 7】nginx配置web服务器
    【CentOS_7】安装nginx
    【python 2.7】获取外部参数
    【python 2.7】输入任意字母数字,输出其对应的莫尔斯码并播放声音
    【python 2.7】python读取json数据存入MySQL
  • 原文地址:https://www.cnblogs.com/CaesarLinsa/p/9887118.html
Copyright © 2011-2022 走看看