zoukankan      html  css  js  c++  java
  • sed,grep,进阶+source+export+环境变量

    三剑客之sed

    概括流程:从文件或管道中,可迭代读取。

    命令格式: sed(软件) 选项 sed命令 输入文件

    两个sed命令:

    a: 追加文本到指定行后

    i: 插入到指定行前

     sed -i '1i houbinglei' log.txt 
     sed -i '1a houbinglei' log.txt 
    

    多行增加(两种方式)

    sed '3a houbinglei
    liuchunhui' log.txt 
    
    sed '3a LLL
    > KKK
    > iii' log.txt
    

    指定执行的地址范围 n1,n2 sed命令

    地址用逗号分割,n1,n2可以是数字,正则表达式,或者二者的组合。

    10 sed命令  对第十行操作
    10.20  包括第10,20行,对10到20行操作
    10,+20  对10到30行操作
    1~2 等差数列,对1、3、5、7等行操作
    10,$ 对10行到最后一行操作
    /oldboy/  对匹配这个字符串的行操作
    /oldboy/,+2  对匹配oldboy的行到其后两行操作 
    

    sed命令 d

    sed '1~2d' log.txt
    sed '/oldboy/d' log.txt
    

    文本替换

    s: 单独使用,将第一处匹配的字符串进行替换 ==》sed命令

    g: 每一行进行全部替换 ==》 非sed命令、

    -i: 修改文件内容 sed软件的选项

    sed -i '3s/old/new/' log.txt  指定行精确修改
    

    双引号、单引号区别:

    双引号可以识别变量
    单引号不可以
    

    sed软件的() 可以记住正则表达式的一部分,()本身是扩展正则表达式,两个表示转义,然后1为第一个小括号里匹配的内容,2为第二个小括号里匹配的内容,sed最多可以记住9个。

    sed 's/^.*am ([a-z]*) <student>/1/g' txt.xx 
    i am oldboy student ==> oldboy
    

    & 代表匹配到的东西。,就是old,s/old/new/

    touch file{1..5}.txt  创建5个文件
    ls |grep stu | sed 's/(^.*).txt/mv & 1.jpg/' | bash  传递给bash执行命令
    
    mv stu_1022_1_finished.txt stu_1022_1_finished.jpg
    mv stu_1022_2_finished.txt stu_1022_2_finished.jpg
    mv stu_1022_3_finished.txt stu_1022_3_finished.jpg
    mv stu_1022_4_finished.txt stu_1022_4_finished.jpg
    mv stu_1022_5_finished.txt stu_1022_5_finished.jpg
    

    sed-n '2p' log.txt -n 和p一起用,只会显示指定输出的行

    三剑客之grep

    点的特殊含义:

    1. 当前目录
    2. 使得文件生效,相当于source
    3. 隐藏文件
    4. 任意一个字符(正则匹配)
    

    grep参数:

    -c  计算找到搜索字符串的次数
    -n  显示行号
    -i  忽略大小写
    -v	取反
    -A	匹配字符串及其行后n行,after
    -B	before
    -C  context,前后各n行
    

    source

    当我修改了/etc/profile文件,我想让它立刻生效,而不用重新登录;这时就想到用source命令,如:source /etc/profile
    对source进行了学习,并且用它与sh 执行脚本进行了对比,现在总结一下。

    source命令:
    source命令也称为“点命令”,也就是一个点符号(.),是bash的内部命令。
    功能:使Shell读入指定的Shell程序文件并依次执行文件中的所有语句
    source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。
    用法:
    source filename 或 . filename
    source命令(从 C Shell 而来)是bash shell的内置命令;点命令(.),就是个点符号(从Bourne Shell而来)是source的另一名称。
    
    source filename 与 sh filename 及./filename执行脚本的区别在那里呢?
    1.当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所有"."是用来表示当前目录的。
    2.sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export。
    3.source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。
    
    
    举例说明:
    1.新建一个test.sh脚本,内容为:A=1
    2.然后使其可执行chmod +x test.sh
    3.运行sh test.sh后,echo $A,显示为空,因为A=1并未传回给当前shell
    4.运行./test.sh后,也是一样的效果
    5.运行source test.sh 或者 . test.sh,然后echo $A,则会显示1,说明A=1的变量在当前shell中
    

    export

    export命令用于将shell变量输出为环境变量,或者将shell函数输出为环境变量。

    一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执 行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到任何后继脚本。

    export  查看当前环境变量
    

    环境变量

    改变环境变量,只对当前用户生效

    修改设置方法:在用户主目录”~”下的隐藏文件 “.bash_profile”中添加自己想要的环境变量。 
    
    export PATH="/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH"
    同样注意,添加完成后新的环境变量不会立即生效,除非你调用source ./.bash_profile 该文件才会生效。否则只能在下次重进此用户时才能生效。
    

    对所有用户生效

    修改/etc/profile
    export PATH="/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH"
    保存,退出,然后运行:
    #source /etc/profile
    

    临时有效的环境变量(只对当前shell有效)

    直接使用export指令添加。 
    

    设置环境变量常用的几个指令

    echo
    查看显示环境变量,使用时要加上符号“$”例:echo $PATH
    
    export
    设置新的环境变量 
    export 新环境变量名=内容 
    例:export MYNAME=”LLZZ”
    
    修改环境变量
    修改环境变量没有指令,可以直接使用环境变量名进行修改。 
    例:MYNAME=”ZZLL”
    
    env
    查看所有环境变量
    
    set
    查看本地定义的所有shell变量
    
    unset
    删除一个环境变量 
    例 unset MYNAME
    
    readonly
    设置只读环境变量。 
    例:readonly MYNAME
    My name is 侯冰雷 ~~欢迎转载 ~~欢迎关注 ~~欢迎留言
  • 相关阅读:
    88. Merge Sorted Array
    87. Scramble String
    86. Partition List
    85. Maximal Rectangle
    84. Largest Rectangle in Histogram
    83. Remove Duplicates from Sorted List
    82. Remove Duplicates from Sorted List II
    81. Search in Rotated Sorted Array II
    80. Remove Duplicates from Sorted Array II
    计算几何——点线关系(叉积)poj2318
  • 原文地址:https://www.cnblogs.com/houbinglei/p/9268867.html
Copyright © 2011-2022 走看看