欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

shell腳本兩個(gè)文件關(guān)鍵行合并方式

 更新時(shí)間:2023年05月08日 14:43:19   作者:111盡力而為  
這篇文章主要介紹了shell腳本兩個(gè)文件關(guān)鍵行合并方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

shell腳本兩個(gè)文件關(guān)鍵行合并

1.寫(xiě)作意圖

有兩個(gè)文件,分別是文件A和文件B。

指定A文件的某些行,并提取關(guān)鍵字key,然后在B文件中查找關(guān)鍵字key所在的行,并把A文件中關(guān)鍵字key所在的行與B文件關(guān)鍵字key所在的行合并起來(lái)寫(xiě)到文件C中.這樣的小功能如果用C/C++寫(xiě)將變得復(fù)雜,那么有沒(méi)有什么簡(jiǎn)介的方式呢?

答案是肯定的.Linux下的shell scripts提供十分強(qiáng)大的功能.可以通過(guò)自帶的各種命令小工具cat\grep\cut\awk\tail等等,然后通過(guò)管道方式拼接,最后通過(guò)shell腳本就可以完成很強(qiáng)大的文本信息搜集與分析功能.

話(huà)不多說(shuō),僅僅把自己會(huì)的貢獻(xiàn)出來(lái).

2.shell按行讀取文件信息

我們從文件decoders的11行開(kāi)始讀取每行的字符串信息,并將其保存到shell的變量line中.

#!/bin/bash
cat decoders|tail -n +11|while read line
do
	echo $line
done

通過(guò)上面的程序,就可以獲取文件decoders的每行數(shù)據(jù),并將其保存在變量line中,簡(jiǎn)單的測(cè)試一下,果然從11行開(kāi)始打印.

3.提取每行第3列的信息

對(duì)于上面的程序增強(qiáng)一下功能,提取第3列的關(guān)鍵字并打印,如012v\4xm這樣的關(guān)鍵字.這里就再次將變量的值通過(guò)標(biāo)準(zhǔn)輸入流送給cut命令,讓該命令完成分割提取工作.最后將提取的結(jié)果保存在變量line1中

#!/bin/bash
cat decoders|tail -n +11|while read line
do
	line1=`echo $line|cut -d " " -f 3`
	echo $line1
done

"|"是管道命令,echo $line將標(biāo)準(zhǔn)輸出結(jié)果送到cut指令中進(jìn)行處理,cut -d " " -f 3表示按照空格分割字符串line,并提取第3列的字符串到變量line1中。小小的shell命令,經(jīng)過(guò)管道拼接,真是強(qiáng)大。

4.在另一個(gè)文件B中查找關(guān)鍵字key

通過(guò)上面的兩個(gè)步驟,就提取到了關(guān)鍵字line,那么接下來(lái)從文件MAINTAINERS中查找關(guān)鍵字line,并將所在的行打印出來(lái)。

#!/bin/bash
cat decoders|tail -n +11|while read line
do
	line1=`echo $line|cut -d " " -f 3`
	line2=`grep $line1 MAINTAINERS`
	echo $line2
done

這里果然匹配到關(guān)鍵字4xm所在的行,對(duì)于匹配不到的行,將輸出空字符串。

5.字符串非空判斷輸出

#!/bin/bash
cat decoders|tail -n +11|while read line
do
	line1=`echo $line|cut -d " " -f 3`
	line2=`grep $line1 MAINTAINERS`
if [ -n "$line2" ];then
	echo $line2
fi
done

通過(guò)shell的判斷語(yǔ)句將非空的結(jié)果打印出來(lái)

6.關(guān)鍵字key所在的文件A的行內(nèi)容與所在的文件B行內(nèi)容合并顯示

#!/bin/bash
cat decoders|tail -n +11|while read line
do
	line1=`echo $line|cut -d " " -f 3`
	line2=`grep $line1 MAINTAINERS`
if [ -n "$line2" ];then
	echo $line
	echo $line2
fi
done

到此,一個(gè)看似復(fù)雜的功能,通過(guò)shell就輕松的搞定.

最后通過(guò)sh test.sh>C.log輸出流重定向到C文件中,C文件保存了合并的結(jié)果

shell將多行合并成一行的小技巧

Shell中將多行合并成一行的小技巧,其實(shí)很簡(jiǎn)單: 每行的結(jié)尾符為\n,只要將每行的\n換成想要的分隔符,就可以達(dá)到目的了。 

主要借助于tr命令

[root@host ~]# cat data
127.0.0.1
127.0.0.2
127.0.0.3
127.0.0.4
[root@host ~]# cat data | tr '\n' '|' ? ? ? ?# 行間以|來(lái)分隔
127.0.0.1|127.0.0.2|127.0.0.3|127.0.0.4

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • linux?shell編程指南之字符串與數(shù)組

    linux?shell編程指南之字符串與數(shù)組

    這篇文章主要給大家介紹了關(guān)于linux?shell編程指南之字符串與數(shù)組的相關(guān)資料,字符串與數(shù)組是Shell編程中常用的數(shù)據(jù)類(lèi)型,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • Shell文本處理三劍客之sed的使用

    Shell文本處理三劍客之sed的使用

    這篇文章主要介紹了Shell文本處理三劍客之sed的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • 利用shell刪除數(shù)據(jù)表中指定信息和字段對(duì)應(yīng)的文件

    利用shell刪除數(shù)據(jù)表中指定信息和字段對(duì)應(yīng)的文件

    這篇文章主要介紹了利用shell刪除數(shù)據(jù)表中指定信息和字段對(duì)應(yīng)的文件,需要的朋友可以參考下
    2014-04-04
  • Linux下使用Shell腳本實(shí)現(xiàn)進(jìn)程監(jiān)控的流程

    Linux下使用Shell腳本實(shí)現(xiàn)進(jìn)程監(jiān)控的流程

    這篇文章主要介紹了Linux下使用Shell腳本實(shí)現(xiàn)進(jìn)程監(jiān)控,在 Linux 平臺(tái)下,shell 腳本監(jiān)控是一個(gè)非常簡(jiǎn)單、方便的工具,它可以有效的對(duì)服務(wù)器、進(jìn)程進(jìn)行監(jiān)控,對(duì)系統(tǒng)開(kāi)發(fā)以及進(jìn)程維護(hù)人員非常有幫助,需要的朋友可以參考下
    2023-02-02
  • find 命令全集

    find 命令全集

    find命令用來(lái)在指定目錄下查找文件,本文給大家整理了關(guān)于find命令的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • 編寫(xiě)shell腳本將VPS上的數(shù)據(jù)備份到Dropbox網(wǎng)盤(pán)的方法

    編寫(xiě)shell腳本將VPS上的數(shù)據(jù)備份到Dropbox網(wǎng)盤(pán)的方法

    這篇文章主要介紹了編寫(xiě)shell腳本將VPS上的數(shù)據(jù)備份到Dropbox網(wǎng)盤(pán)的方法,注意Dropbox在國(guó)內(nèi)訪問(wèn)的網(wǎng)絡(luò)相關(guān)問(wèn)題,需要的朋友可以參考下
    2015-07-07
  • shell命令之mv的具體使用

    shell命令之mv的具體使用

    本文主要介紹了shell命令之mv的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • fedora 23 lvm2格式 根目錄磁盤(pán)空間不足 擴(kuò)容方法

    fedora 23 lvm2格式 根目錄磁盤(pán)空間不足 擴(kuò)容方法

    下面小編就為大家?guī)?lái)一篇fedora 23 lvm2格式 根目錄磁盤(pán)空間不足 擴(kuò)容方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • Shell腳本中引用、調(diào)用另一個(gè)腳本文件的2種方法

    Shell腳本中引用、調(diào)用另一個(gè)腳本文件的2種方法

    這篇文章主要介紹了Shell腳本中引用、調(diào)用另一個(gè)腳本文件的2種方法,本文介紹了兩種方法的語(yǔ)法,然后給出實(shí)際使用實(shí)例和一些要注意的地方,需要的朋友可以參考下
    2015-06-06
  • shell自定義函數(shù)的6個(gè)特點(diǎn)總結(jié)

    shell自定義函數(shù)的6個(gè)特點(diǎn)總結(jié)

    這篇文章主要介紹了shell自定義函數(shù)的6個(gè)特點(diǎn)總結(jié),也是使用shell自定義函數(shù)的一些注意事項(xiàng)總結(jié),以及小技巧介紹,需要的朋友可以參考下
    2014-07-07

最新評(píng)論