sed "s/Old/New/g" myfile #將myfile 中所有的Old 改成 New,輸出於螢幕
上面的 script 可寫成過濾器的形式:
cat myfile | sed "s/Old/New/g"
使用數個過濾器形成一個流水線工作形式:
#------------------------------------------
# txt2htm: 將所有的 *.txt 檔的副檔名改成 htm
#------------------------------------------
ls *.txt | sed 's/.txt//' |
while read name
do
mv $name.txt $name.htm
done
Thu Nov 2 10:14:14 CST 2023
Untitled Document
Summary of Filter
Script ID
Script
說明
filter-1
# replace text
# 將所有的 Old 代換成 New
#-------------------------------------------------------------
sed "s/Old/New/g
filter-2
# remove "XXX"
# 將所有的 "XXX" 刪除
#-------------------------------------------------------------
sed "s/XXX//g"
filter-3
# remove "XXX" from front
# 將每一行開頭的 "XXX" 刪除
#-------------------------------------------------------------
sed "s/^XXX//"
filter-4
# remove "XXX" at the end
# 將每一行結尾的 "XXX" 刪除
#-------------------------------------------------------------
sed "s/XXX\$//"
filter-5
# remove "XXX" at the end
# 將每一行結尾的 "XXX" 刪除
#-------------------------------------------------------------
sed 's/XXX$//'
filter-6
# insert "XXX" in front
# 在每一行前面插入 "XXX"
#-------------------------------------------------------------
sed "s/^/XXX/"
filter-7
# append "XXX" to the end
# 在每一行後面接上 "XXX"
#-------------------------------------------------------------
sed "s/\$/XXX/g"
filter-8
# append "XXX" to end
# 在每一行後面接上 "XXX"
#-------------------------------------------------------------
sed 's/$/XXX/g'
filter-9
# truncate text from "XXX" to the end
# 將每一行中的 XXX 字串及之後所有文字全部刪除
#-------------------------------------------------------------
sed "s/XXX.*//"
filter-10
# extract text by columns
# 將每一行中第5至8的字元抽取出來,其餘全刪掉
#-------------------------------------------------------------
cut -c5-8
filter-11
# convert upper case letters to lower case
# 將所有英文字母變成小寫
#-------------------------------------------------------------
tr '[A-Z]' '[a-z]'
filter-12
# convert lower case letters to upper case
# 將所有英文字母變成大寫
#-------------------------------------------------------------
tr '[a-z]' '[A-Z]'
filter-13
# change tabs to spaces
# 將每一個"跳格"取代成為"空格"
#-------------------------------------------------------------
sed "s/<tab>/ /g"
filter-14
# change multiple spaces to a single space
# 將多個連續的"跳格"取代成為一個"空格"
#-------------------------------------------------------------
sed "s/ */ /g"
filter-15
# change whitespaces to a single space
# 將多個連續的"跳格"或"空格"取代成為一個"空格"
#-----------------------------------------------------------------------------------------------------
sed "s/[<tab><space>][<tab><space>]*/<space>/g"
filter-16
# delete leading whitespaces
# 刪除每一行最前端的多個連續"跳格"或"空格"
#-------------------------------------------------------------
sed "s/^[<tab><space>]*//g"
filter-17
# delete trailing whitespaces
# 刪除每一行最末端的多個連續"跳格"或"空格"
#-------------------------------------------------------------
sed 's/[<tab><space>]*$//'
filter-18
# delete the lines that contain "XXX"
# 將含XXX 字串的行整行全部刪除
#-------------------------------------------------------------
sed "/XXX/d"
filter-19
# delete the lines that contain "XXX"
# 將含有XXX 字串的行整行全部刪除
#-------------------------------------------------------------
grep -v "XXX"
filter-20
# delete empty lines
# 刪除空行
#-------------------------------------------------------------
sed '/^$/d'
filter-21
# delete empty lines
# 刪除空行,行內若只含空格,視為空行
#-------------------------------------------------------------
sed '/^[<tab><space>]*$/d'
filter-22
# delete first line
# 刪除第一行
#-------------------------------------------------------------
sed '1d'
filter-23
# delete first seven lines
# 刪除前七行
#-------------------------------------------------------------
sed '1,7d'
filter-24
# delete last line
# 刪除最後一行
#-------------------------------------------------------------
sed '$d'
filter-25
# print first line
# 印出第一行
#-------------------------------------------------------------
sed -n '1p'
filter-26
# print first line
# 印出第一行
#-------------------------------------------------------------
sed '2,$d'
filter-27
# print first line
# 刪除第一行
#-------------------------------------------------------------
sed '1q'
filter-28
# print last line
# 印出最後一行
#-------------------------------------------------------------
sed -n '$p'
filter-29
# delete comments
# 刪除最前端是"#"的行
#-------------------------------------------------------------
sed '/^#/d'
filter-30
# delete comments
# 刪除最前端是"#"的行
#-------------------------------------------------------------
sed 's/#.*//'
filter-31
# delete text between lines that contain specific keywords
# 從含有字串"Keyword1"的行到含有字串"Keyword2"的行之間全部刪除
#-------------------------------------------------------------------------------------------
sed '/Keyword1/,/Keyword2/d'
filter-32
# delete text between lines that contain specific keywords
# 從只含有字串"Keyword1"的行到只含有字串"Keyword2"的行之間全部刪除
#-----------------------------------------------------------------------------------------------------
sed '/^Keyword1$/,/^Keyword2$/d'
filter-33
# extract text between keywords
# 從只含有字串"Keyword1"的行到只含有字串"Keyword2"的行之間全部印出
#-----------------------------------------------------------------------------------------------------
sed '/^Keyword1$/,/^Keyword2$/!d'
Delete the lines that contain "XXX"
將含有XXX 字串的行整行全部刪除
sed "/XXX/d"
grep -v "XXX"
Thu Nov 2 10:14:17 CST 2023
Untitled Document
Delete Empty Lines
Delete empty lines
刪除空行
sed '/^$/d'
Delete empty lines
刪除空行,行內若只含空格,視為空行
sed '/^[<tab><space>]*$/d'
Thu Nov 2 10:14:17 CST 2023
Untitled Document
Delete Lines
刪除第一行
sed '1d'
刪除前七行
sed '1,7d'
刪除最後一行
sed '$d'
Thu Nov 2 10:14:18 CST 2023
Untitled Document
Print First Line
印出第一行
sed -n '1p'
sed '2,$d'
sed '1q'
Thu Nov 2 10:14:18 CST 2023
Untitled Document
Print Last Line
印出最後一行
sed -n '$p'
Thu Nov 2 10:14:18 CST 2023
Untitled Document
Delete Comments
刪除最前端是"#"的行
sed '/^#/d'
sed 's/#.*//'
Thu Nov 2 10:14:18 CST 2023
Untitled Document
Delete Lines Between Keywords
從含有字串"Keyword1"的行到含有字串"Keyword2"的行之間全部刪除
sed '/Keyword1/,/Keyword2/d'
從 只 含有字串"Keyword1"的行到 只 含有字串"Keyword2"的行之間全部刪除
sed '/^Keyword1$/,/^Keyword2$/d'
Thu Nov 2 10:14:18 CST 2023
Untitled Document
Extract Lines Between Keywords
從 只 含有字串"Keyword1"的行到 只 含有字串"Keyword2"的行之間全部印出
sed '/^Keyword1$/,/^Keyword2$/!d'
Thu Nov 2 10:14:19 CST 2023
Untitled Document
Extract Odd/Even Lines
印出偶數行 (Print Even Lines)
當檔案中每一行只有一欄時,可簡單的script
aaaaaa
bbbbbb
cccccc
dddddd
eeeeee
ffffff
# -----------------------------------------------
# Script: even
# -----------------------------------------------
cat $1 | while read odd
do
read even
echo $even
done