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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux 脚本 查找替换,Shell脚本学习指南之查找与替换介绍

發布時間:2025/3/15 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 脚本 查找替换,Shell脚本学习指南之查找与替换介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

3.1 查找文本

grep:使用POSIX定義的基本正則表達式(BRE)。

egrep:使用擴展正則表達式(ERE)。

fgrep:快速grep。使用優化的算法,匹配固定字符串而非正則表達式。

1992 POSIX標準將這三個改版整合成一個grep程序。

$ who | grep -F austen

使用-F選項查找固定字符串。事實上,只要匹配的模式里未含有正則表達式的meta字符,

則grep默認行為模式就等同于使用了-F。

3.2.6 在文本文件里進行替換

一般來說,執行文本替換的正確程序應該是sed - 流編輯器。

sed 's/:.*//' /etc/passwd |???? 刪除第一個冒號之后的所有東西

sort -u?? 排序列表并刪除重復部分

任何可顯示的字符都能作為定界符。

sed 's;/home/tolstoy/;/home/lt/;'

sed 's/\\/\\/g'

用-e和-f選項,不用將多個sed通過管道串起來,就可以一次替換多個。

$ sed -e 's/foo/bar/g' -e 's/chicken/cow/g' file1.xml > file2.xml

$ cat fixup.sed

s/foo/bar/g

s/chicken/cow/g

...

$ sed -f fixup.sed file1.xml > file2.xml

3.2.8 sed的運作

命令行上的每個文件名會依次打開與讀取。如果沒有文件,則使用標準輸入。

sed讀取每個文件,一次讀一行,將讀取的行放到內存的一個區域(模式空間)。

所有編輯上的操作都會應用到模式空間的內容,當所有操作完成后,sed會將模式

空間的最后內容打印到標準輸出,再回到開始處,讀取另一個輸入行。

3.3 字段處理

用空格(制表符)或特定的定界符(如冒號)。

#字符起始的行表示注釋,軟件必須可忽略這樣的行才行。

以定界符分隔字段的最好例子就是/etc/passwd了:一行表示一個用戶,每個字段以冒號隔開。

該文件含有7個字段:

tolstoy:x:2076:10:Leo Tolstoy:/home/tolstoy:/bin/bash

1.用戶名稱:2.加密后密碼:3.用戶ID:4.用戶組ID:5.姓名:6.根目錄:7.登錄的Shell。

3.3.2 使用cut選定字段

$ cut -d : -f 1,5 /etc/passwd

root:root

...

tolstoy:Leo Tolstoy

$ cut -d : -f 6 /etc/passwd

/root

...

/home/tolstoy

3.3.3 使用join連接字段

以一個共同的鍵值(主字段)將多個文件結合在一起。

$ cat sales

#業務員 數據量

joe???? 100

jane??? 200

herman 150

chris??? 300

$ cat quotas

#業務員 配額

joe???? 50

jane??? 75

herman 80

chris??? 95

#! /bin/sh

# merge-sales.sh

# 刪除注釋并排序數據文件

sed '/^#/d' quotas | sort > quotas.sorted

sed '/^#/d' sales?? | sort > sales.sorted

# 以第一個鍵值作結合

join quotas.sorted sales.sorted

# 刪除緩存文件

rm quotas.sorted sales.sorted

3.3.4 使用awk重新編排字段

awk程序基本架構:pattern { action }

pattern通常是由斜杠括起來的ERE,action通常是一個明了的print語句。

省略pattern則會對每一條輸入記錄執行action,省略action則等同于{ print }。

awk自動將各個記錄分為字段,并將每條記錄內字段數目存儲到內建變量NF。

默認以空白分隔,還可以將FS變量設置為一個不同的值。$加數字表示字段值。

awk '{ print $1 }'?????????????? 打印第1個字段

awk '{ print $2, $5 }'????????? 打印第2與第5個字段

awk '{ print $1, $NF }'??????? 打印第一個與最后一個字段

awk 'NF > 0 { print $0 }'???? 打印非空行

awk 'NF > 0'???????????????????? 同上

awk -F : '{ print $1, $5 }' /etc/passwd???? 設置字段分隔字符,-F選項自動設置FS變量。

root root

...

tolstoy Leo Tolstoy

記得在print的參數間用逗號隔開,否則awk將連接相鄰的所有值。

awk -F: '{ print "User" $1 "is really" $5 }' /etc/passwd

Userrootis reallyroot

...

Usertolstoyis reallyLeo Tolstoy

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的linux 脚本 查找替换,Shell脚本学习指南之查找与替换介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。