成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何使用 Linux sed 命令自動進行文件編輯

系統 Linux
Linux 提供了強大的工具,我可以利用這些工具來完成我的工作。我經常使用 sed,一個可以根據模式修改文本的編輯器。

當我使用 Linux 命令行時,無論是在臺式機上編寫新程序還是在 Web 服務器上管理網站,我經常需要處理文本文件。Linux 提供了強大的工具,我可以利用這些工具來完成我的工作。我經常使用 sed,一個可以根據模式修改文本的編輯器。

sed? 代表 流編輯器,它編輯文件中的文本并打印結果。使用 sed? 的一種方法是識別一個字符串在文件中的幾次出現,并將它們替換為不同的字符串。使用 sed? 來處理文本文件的方式似乎是無窮無盡的,但我想分享一些使用 sed 來幫助我管理文件的方法。

在 Linux 上搜索和替換文件中的文本

要使用 sed?,你需要使用一個正則表達式。正則表達式是定義模式的一組特殊字符。我最常使用 sed? 的例子是替換文件中的文本。替換文本的語法如下:s/originaltext/newtext。s? 告訴 sed 執行文本替換或交換出現的文本。在斜線之間提供原始文本和新文本。

此語法將僅替換每行中第一次出現的 originaltext?。要替換每個匹配項,即使在一行中原始文本出現了不止一次,要將 g? 追加到表達式的末尾。例如:s/originaltext/newtext/g。

要在 sed? 中使用此表達式,請使用 -e 選項指定此正則表達式:

$ sed -e 's/originaltext/newtext/g'

例如,假設我有一個名為 game 程序的 Makefile 文件,該程序模擬了康威的《生命游戲》:

.PHONY: all run clean
all: game
game: game.o
$(CC) $(CFLAGS) -o game game.o $(LDFLAGS)
run: game
./game
clean:
$(RM) *~
$(RM) *.o
$(RM) game

game? 這個名字并不是很有描述性,所以我想會把它改名為 life?。將 game.c? 源文件重命名為 life.c? 非常簡單,但現在我需要修改 Makefile 以使用新名稱。我可以使用 sed? 來將所有的 game? 更改為 life:

$ sed -e 's/game/life/g' Makefile
.PHONY: all run clean
all: life
life: life.o
$(CC) $(CFLAGS) -o life life.o $(LDFLAGS)
run: life
./life
clean:
$(RM) *~
$(RM) *.o
$(RM) life

sed? 會將輸出打印到屏幕上,這是檢查文本替換是否符合你要求的好方法。要對 Makefile 進行這些更改,首先,備份文件,然后運行 sed 并將輸出保存到原始文件名:

$ cp Makefile Makefile.old
$ sed -e 's/game/life/g' Makefile.old > Makefile

如果你確信你的更改正是你想要的,請使用 -i? 或 --in-place? 選項來編輯文件。但是,我建議添加一個備份文件后綴,如 --in-place=.old,用來備份原始文件,以備日后需要恢復時使用。它看起來像這樣:

$ sed --in-place=.old -e 's/game/life/g' Makefile
$ ls Makefile*
Makefile Makefile.old

在 Linux 上使用 sed 引用文件

你可以使用正則表達式的其它功能來匹配特定的文本實例。例如,你可能需要替換出現在行首的文本。使用 sed?,你可以用上尖號 ^ 來匹配行的開頭。

我使用“行首”來替換文本的一種方式是當我需要在電子郵件中引用一個文件時。假設我想在電子郵件中共享我的 Makefile,但我不想將其作為文件附件包含在內。相反,我更喜歡在電子郵件正文中“引用”文件,在每行之前使用 >?。我可以使用以下 sed 命令將編輯后的版本打印到我的終端,并將其復制粘貼到新的電子郵件中:

$ sed -e 's/^/>/' Makefile
>.PHONY: all run clean
>
>all: life
>
>life: life.o
> $(CC) $(CFLAGS) -o life life.o $(LDFLAGS)
>
>run: life
> ./life
>
>clean:
> $(RM) *~
> $(RM) *.o
> $(RM) life

s/^/>/? 正則表達式匹配每行的開頭(^?),并在那里放置一個 >?。實際上,這相當于每行都以 > 符號開始。

制表符可能無法在電子郵件中正確顯示,但我可以通過添加另一個正則表達式將 Makefile 中的所有制表符替換為幾個空格:

$ sed -e 's/^/>/' -e 's/\t/  /g' Makefile
>.PHONY: all run clean
>
>all: life
>
>life: life.o
> $(CC) $(CFLAGS) -o life life.o $(LDFLAGS)
>
>run: life
> ./life
>
>clean:
> $(RM) *~
> $(RM) *.o
> $(RM) life

\t? 表示文字制表符,因此 s/\t/ /g? 告訴 sed 用輸出中的兩個空格替換輸入中的所有制表符。

如果你需要對文件進行大量編輯,你可以將 -e? 命令保存在文件中,并使用 -f? 選項來告訴 sed? 將該文件用作“腳本”。如果你需要經常進行相同的編輯,這種方法特別有用。我已經準備了 quotemail.sed 的腳本文件來在我的電子郵件中引用 Makefile:

$ cat quotemail.sed
s/^/>/
s/\t/ /g
$ sed -f quotemail.sed Makefile
>.PHONY: all run clean
>
>all: life
>
>life: life.o
> $(CC) $(CFLAGS) -o life life.o $(LDFLAGS)
>
>run: life
> ./life
>
>clean:
> $(RM) *~
> $(RM) *.o
> $(RM) life

學習在 Linux 上使用 sed

sed? 是一個很好的工具,可以保存在你的 Linux 命令行工具包中。瀏覽 sed? 手冊頁并了解有關如何使用它的更多信息。在命令行中鍵入 man sed? 以獲取有關不同命令行選項的完整文檔,以及如何使用 sed 處理文本文件。

責任編輯:趙寧寧 來源: Linux中國
相關推薦

2023-07-05 07:36:36

SpringJava代碼

2019-08-28 15:43:03

sed命令Linux

2016-12-23 13:07:11

shelllinuxsed

2021-05-24 06:20:04

Linuxsed命令

2011-09-01 18:54:29

WifiGoodReader

2021-08-30 07:57:26

OpenAttack文本對抗攻擊

2024-11-20 10:00:00

Python文件讀寫

2016-12-14 09:32:49

FileChanne文件復制

2024-10-28 16:42:04

Linux編輯器sed 命令

2010-01-20 10:18:13

Linux VI編輯命令

2010-03-12 19:29:15

python svn腳

2021-01-07 11:00:59

Sed文本編輯器Linux

2023-07-03 22:35:50

Linux命令

2021-06-13 09:01:47

SedLinux命令

2018-05-11 14:59:21

LinuxVim編輯器

2024-09-29 16:27:46

Python文件管理

2019-09-12 08:32:40

Linuxsed命令語法

2021-09-21 15:28:33

LinuxSed智能引號

2018-03-27 13:33:48

百度

2021-04-06 09:46:15

Linuxanacron命令系統運維
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一级片一区二区三区 | 91不卡| 国产一区二区精品在线观看 | 黑人精品 | 免费成人高清在线视频 | 亚洲一区日韩 | 午夜精品久久久久久久99黑人 | 亚洲成人免费视频 | 日韩视频在线一区二区 | 国产一区二区观看 | 亚洲欧美日本在线 | 天天色综| 欧美在线观看一区 | 欧美综合在线视频 | 欧美日韩精品一区 | 亚洲欧美日韩系列 | 精品粉嫩aⅴ一区二区三区四区 | 欧美日韩大片 | 欧美精品一区二区三区在线 | 久久久久国产一区二区 | 日韩在线播放一区 | 99re在线视频观看 | 欧美精品在线一区二区三区 | 国产精品国产成人国产三级 | 久久久久久a | 国产超碰人人爽人人做人人爱 | 国产黄色大片 | 亚洲精品视频在线观看视频 | 亚洲情综合五月天 | 国产在线一区二区三区 | 日韩欧美中文在线 | 日韩av免费看 | 精国产品一区二区三区四季综 | 二区在线视频 | 亚洲精品一区在线观看 | 亚洲高清在线观看 | 男人的天堂在线视频 | 久久蜜桃av一区二区天堂 | 精产嫩模国品一二三区 | 三级视频久久 | 在线视频亚洲 |