国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

shell讀取配置文件-sed命令

這篇具有很好參考價值的文章主要介紹了shell讀取配置文件-sed命令。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

在編寫啟動腳本時,涉及到讀取配置文件,特地記錄下shell腳本讀取啟動文件的方式。主要提供兩種格式的讀取方式,方式一配置文件采用“[]”進(jìn)行分區(qū),方式二配置文件中需要有唯一的配置項(xiàng)名稱。

配置文件格式如下:

# cat -n config.ini
1 #MYSQL配置項(xiàng)
2 [MYSQL]
3 DB_HOST=192.168.0.1
4 DB_PORT=3306
5 DB_USER=root
6 DB_PASSWD=mysql1234
7 DB_NAME=system_manager1
8
9 #MYSQL_1配置項(xiàng)
10 [MYSQL_1]
11 MYSQL_DB_HOST=192.168.0.2
12 MYSQL_DB_PORT=2200
13 MYSQL_DB_USER=root
14 MYSQL_DB_PASSWD=mysql123456
15 MYSQL_DB_NAME=bigdata1
16 MYSQL_INIT_SQL='set slave;stop backup;'
17
18 #REDIS配置項(xiàng)
19 [REDIS]
20 DB_HOST=192.168.0.1
21 DB_PORT=6379
22 DB_ID=4
23 DB_PASSWD=redis1234

方式一:先試使用grep獲取配置項(xiàng)的開始行、結(jié)束行。
# grep -n -E '^\[' config.ini |grep -A 1 "\[MYSQL\]"|awk -F ':' '{print $1}'|xargs
2 10

# grep -n -E '^\[' config.ini |grep -A 1 "\[REDIS\]"|awk -F ':' '{print $1}'|xargs
19

在使用sed根據(jù)開始行、結(jié)束行獲取實(shí)際配置

# sed -n "2,10 s/DB_HOST=//p" config.ini
192.168.0.1

# sed -n "19,$ s/DB_PORT=//p" config.ini
6379

方式二:使用正則匹配唯一的配置項(xiàng)名稱,并顯示實(shí)際配置

# sed -r -n 's/(^MYSQL_INIT_SQL=)(.*)$/\2/p' config.ini
'set slave;stop backup;'

# sed -r -n 's/(^MYSQL_DB_HOST=)(.*)$/\2/p' config.ini
192.168.0.2

完整腳本如下:

# cat config.sh
#!/bin/bash
set -e

exit_script(){
   exit 1
}

if [ "$#" = 0 ]; then
    echo "參數(shù)錯誤,命令格式為:    ./config.sh configfile"
    exit_script
else
    configPath=$1
fi

function get_line_num(){
    local configKey=$1
    grep -n -E '^\[' ${configPath} |grep -A 1 "\[${configKey}\]"|awk -F ':' '{print $1}'|xargs
}

function get_config(){
    #local configPath=$1
    local configKey=$1
    local configName=$2
    local line_num=$(get_line_num $configKey)
    local startLine=$(echo $line_num |awk '{print $1}')
    local endLine=$(echo $line_num|awk '{print $2}')
    if [ ${endLine} ];then
        sed -n "${startLine},${endLine} s/${configName}=//p" ${configPath}
    else
        sed -n "${startLine},$ s/${configName}=//p" ${configPath}
    fi
}

if [ -f $configPath ];then
    MYSQL_DB_HOST=$(get_config MYSQL DB_HOST)
else
    echo ${configPath}"文件不存在,請檢查配置文件是否存在"
    exit_script
fi
MYSQL_DB_PASSWD=$(get_config MYSQL DB_PASSWD)
MYSQL_DB_USER=$(get_config MYSQL DB_USER)
REDIS_DB_HOST=$(get_config REDIS DB_HOST)
REDIS_DB_PASSWD=$(get_config REDIS DB_PASSWD)

MYSQL_DB_HOST=$(sed -r -n 's/(^MYSQL_DB_HOST=)(.*)$/\2/p' $configPath)
MYSQL_DB_NAME=$(sed -r -n 's/(^MYSQL_DB_NAME=)(.*)$/\2/p' $configPath)
INIT_SQL=$(sed -r -n 's/(^MYSQL_INIT_SQL=)(.*)$/\2/p' $configPath)

echo "MYSQL_DB_HOST="${MYSQL_DB_HOST}
echo "MYSQL_DB_PASSWD="${MYSQL_DB_PASSWD}
echo "MYSQL_DB_USER="${MYSQL_DB_USER}
echo "REDIS_DB_HOST="${REDIS_DB_HOST}
echo "REDIS_DB_PASSWD="${REDIS_DB_PASSWD}

echo "-----------------分割線-------------"
echo "使用sed讀取配置:MYSQL_DB_HOST="${MYSQL_DB_HOST}
echo "使用sed讀取配置:MYSQL_DB_NAME="${MYSQL_DB_NAME}
echo "使用sed讀取配置:MYSQL_INIT_SQL="${INIT_SQL}

實(shí)際執(zhí)行結(jié)果:

# ./config.sh config.i
config.i文件不存在,請檢查配置文件是否存在

# ./config.sh config.ini
MYSQL_DB_HOST=192.168.0.2
MYSQL_DB_PASSWD=mysql1234
MYSQL_DB_USER=root
REDIS_DB_HOST=192.168.0.1
REDIS_DB_PASSWD=redis1234
-----------------分割線-------------
使用sed讀取配置:MYSQL_DB_HOST=192.168.0.2
使用sed讀取配置:MYSQL_DB_NAME=bigdata1
使用sed讀取配置:MYSQL_INIT_SQL='set slave;stop backup;'

?文章來源地址http://www.zghlxwxcb.cn/news/detail-410403.html

到了這里,關(guān)于shell讀取配置文件-sed命令的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • shell sed命令

    shell sed命令

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 sed是一種流編輯器,流編輯器會在編輯器處理數(shù)據(jù)之前基于預(yù)先提供的一組規(guī)則來編輯數(shù)據(jù)流。 sed編輯器可以根據(jù)命令來處理數(shù)據(jù)流中的數(shù)據(jù),這些命令要么從命令行中輸入,要么存儲在一個命令文本

    2024年02月06日
    瀏覽(19)
  • android 運(yùn)行shell 腳本文件或shell命令

    android 運(yùn)行shell 腳本文件或shell命令 一.運(yùn)行shell腳本文件 1.test.sh文件內(nèi)容 #!/bin/bash echo \\\"I am a script\\\" ps 2.將shell文件拷貝到Android設(shè)備目錄 3.執(zhí)行腳本文件 Runtime.getRuntime().exec(\\\"sh /sdcard/lilei/test.sh\\\"); 注: 應(yīng)用需要有存儲訪問權(quán)限,如果shell文件中有文件訪問請用絕對路徑,否則訪問

    2024年03月12日
    瀏覽(30)
  • 【Linux編程Shell自動化腳本】03 shell四劍客(find、sed、grep、awk)

    語法格式 參數(shù)說明 : path 是要查找的目錄路徑,可以是一個目錄或文件名,也可以是多個路徑,多個路徑之間用空格分隔,如果未指定路徑,則默認(rèn)為當(dāng)前目錄。 expression 是可選參數(shù),用于指定查找的條件,可以是文件名、文件類型、文件大小等等。 1. 常用expression 以下列出

    2024年02月09日
    瀏覽(28)
  • OpenWrt | 以斐訊K2為例,編寫腳本使用logread命令實(shí)時讀取日志,監(jiān)聽OpenWrt網(wǎng)線插拔事件

    OpenWrt | 以斐訊K2為例,編寫腳本使用logread命令實(shí)時讀取日志,監(jiān)聽OpenWrt網(wǎng)線插拔事件

    OpenWrt是一個高度模塊化、高度自動化的嵌入式Linux系統(tǒng),擁有強(qiáng)大的網(wǎng)絡(luò)組件和擴(kuò)展性,適用于較多的路由器設(shè)備。 有時候,在使用OpenWrt時,我們需要監(jiān)聽網(wǎng)線的插拔,獲取網(wǎng)線插拔的事件,并執(zhí)行一些操作。OpenWrt官方文檔給出使用hotplug去獲取相關(guān)事件: https://openwrt.org/d

    2024年02月11日
    瀏覽(90)
  • shell批量執(zhí)行命令與文件傳輸腳本

    shell批量執(zhí)行命令與文件傳輸腳本

    對未進(jìn)行主機(jī)信任操作的服務(wù)器進(jìn)行批量操作 由于ssh只能在交互模式中輸入服務(wù)器密碼進(jìn)行登錄登操作,不便于進(jìn)行大批量服務(wù)器進(jìn)行巡檢或日志采集。sshpass恰好又解決了這個問題,使用 ssh -p passwd 可以實(shí)現(xiàn)命令行輸入密碼操作,便于進(jìn)行規(guī)模巡檢 首先需要在腳本執(zhí)行機(jī)器

    2024年02月08日
    瀏覽(25)
  • 【Shell 命令集合 文件管理】Linux 讀取命令 read命令使用指南

    【Shell 命令集合 文件管理】Linux 讀取命令 read命令使用指南

    Shell 命令專欄:Linux Shell 命令全解析 在Linux中, read 命令用于從標(biāo)準(zhǔn)輸入或者文件中讀取輸入,并將其賦值給一個變量。它的基本語法如下: 選項(xiàng)可以是以下之一: -p :指定一個提示符,用于提示用戶輸入。 -r :取消對反斜杠的轉(zhuǎn)義,保留其原始含義。 -t :設(shè)置等待用戶輸

    2024年02月04日
    瀏覽(42)
  • Shell腳本常用命令及如何通過shell腳本實(shí)現(xiàn)服務(wù)器上文件的上傳和下載

    Shell腳本常用命令 簡介 1、什么是shell: Shell 是一個用 C 語言編寫的應(yīng)用程序,這個應(yīng)用程序提供了一個界面,用戶通過這個界面訪問操作系統(tǒng)內(nèi)核的服務(wù)。Shell 腳本(shell script),是一種為 shell 編寫的腳本程序,擴(kuò)展名為.sh。 2、如何編寫shell腳本: 文本編輯器(可以使用

    2024年02月03日
    瀏覽(32)
  • Shell腳本文本三劍客之sed編輯器(擁明月入懷,攬星河入夢)

    Shell腳本文本三劍客之sed編輯器(擁明月入懷,攬星河入夢)

    sed編輯器可以根據(jù)命令來處理數(shù)據(jù)流中的數(shù)據(jù),通過多種轉(zhuǎn)換修改流經(jīng)它的文本,這些命令要么從命令行中輸入,要么存儲在一個命令文本文件中。 sed是一個面向字符流的非交互式編輯器,也就是說 sed 不允許用戶與它進(jìn)行交互操作。 1.讀取 sed從輸入流(文件、管道、標(biāo)準(zhǔn)輸

    2024年02月08日
    瀏覽(31)
  • History命令解釋,及一個相關(guān)的bash腳本(如何編寫腳本程序從記錄文件中提取history命令)

    目? ? ? ? ? ? ? ? 錄 一、history命令介紹 1、history命令是什么? 2、history的主要功能 二、history命令的用法 1、語法 2、選項(xiàng)說明 3、命令實(shí)例 三、history和歷史記錄文件bash_history 四、history命令的相關(guān)配置 1,命令帶時間展示-HISTTIMEFORMAT 2,命令行數(shù)大小-HISTSIZE 3、設(shè)置命令保

    2024年01月23日
    瀏覽(53)
  • linux 之 shell腳本實(shí)現(xiàn)SFTP下載、上傳文件、執(zhí)行sftp命令

    linux 之 shell腳本實(shí)現(xiàn)SFTP下載、上傳文件、執(zhí)行sftp命令

    需求方通過sftp不定時的上傳一批用戶(SBXDS_ACC_M_任務(wù)ID_yyyymmddHHMMSS.csv),需要我們從這些用戶中找出滿足條件的用戶。然后把這些結(jié)果用戶通過文件的形式上傳到ftp。 ip1能連接hive庫環(huán)境,不能連接sftp。 ip2不能連接hive庫環(huán)境,能連接sftp。 ip1和ip2是共享盤,能同時訪問公共目錄

    2024年02月19日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包