日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

bash和sed简要介绍和相关范例

發(fā)布時(shí)間:2025/3/20 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bash和sed简要介绍和相关范例 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?一、bash 中如何進(jìn)行條件測(cè)試:

?? 有三種類型的測(cè)試:整數(shù)測(cè)試、字符串測(cè)試、文件測(cè)試

?? 1.整數(shù)測(cè)試:

???????????? -eq?? 左邊的值是否等于右邊

???????????? -gt?? 左邊的值是否大于右邊?

???????????? -ge?? 左邊的值是否大于等于右邊

???????????? -lt?? 左邊的值是否小于右邊

??????????? ?-le?? 左邊的值是否小于等于右邊

???????????? -ne?? 左邊的值是否不等于右邊

??? 2.字符串測(cè)試:

?????????????? == 也可以寫成=????? 左右兩個(gè)字符串是否相同

?????????????? =???????????????? 左右兩個(gè)字符串是否不同

?????????????? -z?????????????????? 查看字符串是否為空

?????????????? -n?????????????????? 查看字符串是否不為空

??? 3.文件測(cè)試:

??????????????? -e? ???FILE?????? ?判斷是否為單目操作

??????????????? -f??? ?FILE?????? ?判斷是否為普通文件

???? ???????????-d??? ?FILE????? ??判斷是否為目錄

??????????????? -h/-l? ?FILE????? ??判斷是否為符號(hào)鏈接文件

??????????????? -b??? ?FILE????? ??判斷是否為塊設(shè)備文件

??????????????? -c??? ?FILE?????? ?判斷是否為字符設(shè)備文件

??????????????? -r????? FILE?????? 判斷當(dāng)前所用的文件是否有讀權(quán)限

??????????????? -w???? FILE??????? 判斷文件是否有寫權(quán)限

??????????????? -x???? FILE??????? 判斷文件是否有執(zhí)行權(quán)限

二、sed編輯器介紹

? 1.sed:(stream editor ,是一個(gè)很好用的行編輯器,支持正則表達(dá)式的處理,具有如下特點(diǎn):

?1sed是一個(gè)非交互式的編輯器

?2)沒(méi)有破壞性,不修改源文件,除非使用shell的重定向符來(lái)保存結(jié)果

?3sed還支持sed腳本

?使用格式:

?(1)1,4?:表示查找范圍是1-4行,使用格式:sed‘a(chǎn)ddr1,addr2s@from@tog/i’

?其中addr1是開始行,addr2是結(jié)束行,;s 是替換,@為分隔符,也可以是其他

?字符,但是不能與查找的字符一樣,from是查找什么,to 是替換成什么,g是全

?局查找,i 忽略大小寫查找

2/pattern/command? ??sed 也支持模式匹配,

3/pattern1/ ,/pattern2/

? ? i\? 在當(dāng)前行的上方添加一行或者多行

??? ?a\ ?在當(dāng)前行的下方添加一行或者多行

? ? ??對(duì)模式匹配到的內(nèi)容取反

?????d ?刪除匹配到的內(nèi)容 ,如:sed '5d' filename ?,將文件中的第5行刪除;sed '5,7d' filename ?將文件中的第5-7行刪除

? ? ?

2.sed 的一些常用選項(xiàng)

??????-n ?靜默模式,只顯示被模式匹配到的內(nèi)容

??????-e ?一次指定多個(gè)條件 ,例如:sed ?-e ‘’ ?‘’ ?‘’ ?文件名

? ? ? -i ??可以直接修改原文件

? ? ? -f?? 讀取sed 腳本

3.sed用法的簡(jiǎn)單例子:

echo "var/log/httpd/access_log/" | sed 's@.*/\([^/]\{1,\}\)/\{0,1\}@\1@g'

顯示結(jié)果:access_log

echo "/etc/log/httpd/access_log" | sed '1,$s@\(.*\)/[^/]\{1,\}@\1@g'

顯示結(jié)果:/etc/log/httpd

三、Shell 腳本編程范例:

1.寫一個(gè)腳本:

(1)創(chuàng)建目錄/tmp/scripts

(2)切換工作目錄至此目錄中

(3)復(fù)制/etc/pam.d目錄至當(dāng)前目錄,并重命名為test

(4)將當(dāng)前目錄中的test及其里面的文件和子目錄的屬主改為redhat

(5)test及其子目錄中的文件的其他用戶的權(quán)限改為沒(méi)有任何權(quán)限

#!/bin/bash

WDIR='/tmp/scripts'

mkdir $WDIR &> /dev/null

cd $WDIR

cp -r /etc/pam.d test &> /dev/null

chown -R redhat test &> /dev/null

chmod -R o= test &> /dev/null

2.寫一個(gè)腳本:

(1).切換工作目錄至/var?????????????

(2).依次向/var目錄中的每個(gè)文件或者子目錄問(wèn)好

1種方法

#!/bin/bash

echo "lian xi "

cd /var

echo "qie huan mulu chenggong "

for file in `ls /var`; do

??? echo "hello,$file" | cut -d/ -f1,3

done

2種方法

#!/bin/bash

echo "lian xi "

cd /var

echo "qie huan mulu chenggong "

for file in /var/*; do

??? echo "hello,`basename $file`"

done

3.100以內(nèi)的整數(shù)的和:

#!/bin/bash

?? declare -i SUM=0

?? for I in {1..100}; do

?? SUM=$[$SUM+$I]

done

? echo "the sum is:$SUM"

4.100以內(nèi)偶數(shù)的和;

#!/bin/bash

?? declare -i SUM=0

?? for I in `seq 0 2 100`; do

?? SUM=$[$SUM+$I]

done

? echo "the sum is:$SUM"

5.寫一個(gè)腳本:

(1)設(shè)定變量FILE的值為/etc/passwd

(2)使用循環(huán)讀取文件/etc/passwd 的第2,4,6,10,13,15行,并顯示其內(nèi)容:

(3)把這些行保存至/tmp/mypasswd文件中

#!/bin/bash

FILE='/etc/passwd'

for LINE in 2 4 6 10 13 15; do

? head -$LINE $FILE | tail -1 | tee -a /tmp/mypasswd

done

6.寫一個(gè)腳本:

(1)設(shè)定變量FILE的值為/etc/passwd

(2)依次向/etc/passwd中的每個(gè)用戶問(wèn)好,形如:Helloroot,顯示自己的shell

形如:your shell bash

(3)統(tǒng)計(jì)一共有多少個(gè)用戶

第一種方法:

#!/bin/bash

FILE='/etc/passwd'

LINES=`wc -l $FILE | cut -d' ' -f1`

?for LINE in `seq 1 $LINES`; do

? echo "Hello ,`head -$LINE $FILE | tail -1 | cut -d: -f1`, your shell:`head -$LINE $FILE | tail -1 | cut -d: -f7`"

done

也可以這樣:

for LINE in `seq 1 $LINES`; do

??? ?MYUSER=`head -$LINE $FILE | tail -1 | cut -d: -f1`

???? MYSHELL=`head -$LINE $FILE |tail -1 | cut -d: -f7`

?? echo "Hello ,$MYUSER,your shell: $MYSHELL"

7.創(chuàng)建10個(gè)用戶并為其添加密碼,以用戶一樣的密碼

for NEWUSER in {1..10};do

??? useradd user$Newuser &> /dev/null

??? echo "user$Newuser" | passwd --stdin user$NEwuser &> /dev/null

done

轉(zhuǎn)載于:https://blog.51cto.com/linuxg/785391

總結(jié)

以上是生活随笔為你收集整理的bash和sed简要介绍和相关范例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。