亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

總結linux中sed命令的使用方法

linux之sed命令:

1、初識sed

sed編輯器被稱作流編輯器,它和vim這種的交互式文本編輯器不同,是根據命令來處理數據流中的數據。會執行下列操作:

一次從輸入中讀取一行數據(重復該操作直到全部行被讀取完)

根據編輯器命令匹配數據

按照命令修改數據流中的數據

將新數據輸出到STDOUT(標準輸出)

其中sed命令的可以從命令行中輸入,也可以從一個命令文件中讀取。

sed -e script 添加script中指定的命令
sed -f file 添加file中指定的命令


1.1 在命令行定義sed命令

來看一個簡單的文本替換示例:

echo "hi,my name is xxx" | sed 's/xxx/kinsomy/'
#修改文件
sed 's/xxx/kinsomy/' data.txt
#執行多個命令 用-e選項,分號隔開
sed 's/xxx/kinsomy/; s/***/hhh/' data.txt

將echo輸出的數據通過管道輸入sed中,然后用s命令進行替換,用第二個斜杠后的數據替換掉第一個斜杠后匹配的數據。

注意:sed操作文本文件中的數據,僅僅是將修改的數據輸出到STDOUT,但是并不會修改文件本身的數據


1.2 從文件讀取命令

在一個文件script.sed中定義一系列的命令,方便復用。

s/*/a
s/x/b
s/-/+
# -f選項指定命令文件
sed -f script.sed data.txt


2、sed基礎

2.1替換標記

上面的例子echo "hi,my name is xxx" | sed 's/xxx/kinsomy/'只會替換每一行中匹配到的第一個數據,但是一行數據中若有多個匹配項,則不能全部被替換掉。

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/'
#輸出
hi,my name is kinsomy, i am xxx

這個時候可以使用一些替換標記substitution flag來設置替換的模式。替換標記跟在替換字符串之后。

s/pattern/replacement/flags

數字,表示將替換掉第幾處被匹配到的數據

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/2'
#輸出 第二個xxx被替換成kinsomy
hi,my name is xxx, i am kinsomy

g,表示替換所有匹配到的數據

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/g'
#輸出 第二個xxx被替換成kinsomy
hi,my name is kinsomy, i am kinsomy

p,表示會打印出被匹配出來的行

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/p'
#輸出
hi,my name is kinsomy, i am xxx
hi,my name is kinsomy, i am xxx

w,將替換后輸出保存到指定文件

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/w output.txt'


2.3 行尋址

上文說到sed命令是一行行讀取文本,進行匹配操作數據,知道所有行被遍歷完,如果這時候我們想要對特定的行做操作就要使用行尋址。 行尋址有兩種形式:

數字形式表示行

# 操作單行
$ sed '2s/xxx/***/' data.txt
# 操作一定行區間[2,4]
$ sed '2,4s/xxx/***/' data.txt
# 操作某行開始到最后[2,endline]
$ sed '2,$s/xxx/***/' data.txt

文本模式過濾器

首先在/etc/passwd內找到kinsomy的記錄,然后將bash替換為csh。文本模式過濾器配合正則表達式會很強大。

sed '/kinsomy/s/bash/csh/' /etc/passwd


2.4 刪除行

使用刪除命令d對文本進行刪除操作。

# 刪除所有文本
sed 'd' data.txt
# 刪除單行
sed '2d' data.txt
# 刪除行區間[2,3]
sed '2,3d' data.txt
# 刪除行區間[2,endline]
sed '2,$d' data.txt
# 刪除匹配文本aa的行
sed '/aa/d' data.txt
# 刪除兩個匹配文本之間的文本 匹配到1和3的行之間的文本全部被刪除
sed '/1/,/3/d' data.txt


2.5 插入、附加文本

插入命令i在指定行前增加新行

附加命令a在指定行后增加新行

# 追加
echo "Line 2" | sed 'a\
pipe quote> Line 1'
#插入
echo "Line 2" | sed 'i\
pipe quote> Line 1'


2.6 修改行

c命令用來修改一行數據

# 修改第三行文本
sed '3c\
pipe quote> change line ' data.txt


2.7 轉換命令

命令格式 sed 'y/inchar/outchar'

將inchar中的字符一一對應地轉換成outchar的字符

echo "This 1 is a test of 1 try." | sed 'y/123/456/'
# 輸出
This 4 is a test of 4 try.


分享到:
標簽:linux命令 sed命令使用方法
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定