zoukankan      html  css  js  c++  java
  • 通过bash文件(shell命令)对文件进行修改

    通过shell来对某文件进行修改主要用到了以下命令

    sed命令

    定位

    定位有两种匹配方式,第一种根据某行开头内容进行匹配;第二种根据关键字进行匹配。

    第一种: sed -n '/^bbbb/=' file  #在file文件中匹配所有以bbbb为开头的行

    第二种: sed -n '/bbbb/=' file  #在file文件中匹配所有含有bbbb关键字的行

    删除

    删除也是两种方式删除,第一种是根据行号删除;第二种是根据关键字删除。

    第一种:sed -i '5d' file  #删除第5行

    sed -i '5,10d' file  #删除第5到第10行

    第二种: sed -i '/aaa/'d file  #删除所有包含‘aaa’的行

    替换

    形式为:sed -i 's/被替换的内容/要替换成的内容/' file

    ex:sed -i 's/aaa/bbb/g' file  #把file中所有的aaa字符串替换成bbb字符串

    写入

    写入也有两种方式,第一种是把某文件写入到当前文件中;第二种是把某字符串写入当前文件中。

    第一种:sed -i '10 r file2' file1  #在file1中的第10行插入file2

    sed -i '/regex/ r file2' file1  #在file1中的匹配regex正则表达式所在行,然后插入file2

    第二种:sed -i  “5a ccc ” file  #“5a”表示在第5行之后添加,“ccc”表示要添加的内容,若想在第5行之前添加内容可以把“a”换成“i”

    变量

    自增

    在bash文件中,变量a的自增这么表示((a++))

    加减运算

    Shell 的所有变量默认都是字符型,所以直接运算只是字符串拼接,运算主要用到了expr,格式为 expr 变量 +/-/*// 数字

    a=0

    number=`expr $a + 1`

    echo number

    1

    注意:

    '+ -'
         加减运算。两端参数会转换为整数,如果转换失败则报错。
     
    '* / %'
         乘,除,取模运算。两端参数会转换为整数,如果转换失败则报错。

    eval变量嵌套替换

    在bash文件中,若想让多个变量组合形成一个新变量直接把变量拼接起来是行不通的,需要用到eval命令才能让变量组合形成新变量。

    ex:

    file1=file.txt

    a='file'

    b='1'

    c1=$a$b

    c2='$'$a$b

    eval d='$'$a$b

    echo c1;c2;d

    file1;$file1;file.txt    #通过结果可以看到,c2虽然输出的$file1,但是它是以字符串形式输出的,并不能输出变量file1的值,而通过eval定义的变量d,通过拼接字符串可以获取到变量file1的值。

    字符串的分割截取

    ${#parameter}    #这种可以获得字符串的长度。

    ${parameter%} 最小限度从后面截取word
    ${parameter%%word} 最大限度从后面截取word
    ${parameter#word} 最小限度从前面截取word
    ${parameter##word} 最大限度从前面截取word

    ex: a=“file1:file2:file3”

    ${a%:*}    #删除从右到左第一个:后的内容,输出结果为“file1:file2”

    ${a%%:*}   #删除从右到左最后一个:后的内容,输出结果为“file1”

    ${a#*:}     #删除从左到右第一个:前的内容,输出结果为“file2:file3”

    ${a##*:}    #删除从左到右最后一个:前的内容,输出结果为“file3”

    if语句

    格式

    if [ 条件表达式 ]; then

    指令一

    else

    指令二

    fi

    常用选项

    -eq       等于,如:if [ "$a" -eq "$b" ]
    -ne       不等于,如:if [ "$a" -ne "$b" ]
    -gt       大于,如:if [ "$a" -gt "$b" ]
    -ge       大于等于,如:if [ "$a" -ge "$b" ]
    -lt       小于,如:if [ "$a" -lt "$b" ]
    -le       小于等于,如:if [ "$a" -le "$b" ]
    <       小于(需要双括号),如:(("$a" < "$b"))
    <=       小于等于(需要双括号),如:(("$a" <= "$b"))
    >       大于(需要双括号),如:(("$a" > "$b"))
    >=       大于等于(需要双括号),如:(("$a" >= "$b"))
    此处因为用到的不是很多,所以要想查看更多的关于if的命令可以看这篇文章:https://blog.csdn.net/xushiyu1996818/article/details/84545103 

    需要注意的是,条件表达式左右两侧都要右空格。

    shell中创建序列(list)

    list元素之间用空格来分割,存储时也要注意每存储完一个元素要添加空格来分割元素,可以使用for..in..取值,也可以根据索引来取值。

    numlist=${seq 10}    #现在我们得到了一个从1到10的list,

    echo ${numlist[0]}    #获取numlist中索引为0的元素

    1

    echo ${#numlist[*]}"    #获取numlist的长度

    10

    函数

    创建

     定义函数有两种方式

    第一种:function_name (){ command }

    第二种:function function_name (){ command }

    调用

    调用时直接用 函数名称  参数1 参数2 。。。。。。

    ex: function add_number (){

     num=`expr $1 + $2`

    return num

    }

    add_number 2 3

    echo $?

    5

    金无足赤,人无完人,若有文章什么问题欢迎各位批评指正,共同交流,共同进步。 另,人过留名,雁过留声,少侠觉得还行的话留下个赞吧!:)
  • 相关阅读:
    git 一般的使用操作
    php 导出excel,csv
    安装sublime_text_3
    安装mongodb记录,mongo基本命令记录
    redis 安装记录
    YII2 activeform样式修改
    go 安装下载
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hbsjz/com.hbsjz.BaseMapActivity}:
    SQLServer创建触发器,更新表
    SQL Server触发器创建、删除、修改、查看示例步骤
  • 原文地址:https://www.cnblogs.com/thePeaceOftheLord/p/11107737.html
Copyright © 2011-2022 走看看