如何在 Linux 中在檔案的每一行之後新增字串?


介紹

我們有時需要快速更改檔案,最好是從命令列進行。一個例子是在檔案的每一行末尾新增一個字串。

在本文中,我們將探討使用各種 Linux 命令來實現此目的的幾種方法。

本文將始終使用以下示例檔案 language.txt:

pi@TTP:~ $ touch language.txt

示例

將建立一個名為 language.txt 的檔案。

pi@TTP:~ $ cat > language.txt

藉助帶 `>` 的 `cat` 命令,我們可以將資料插入檔案。如果我們開啟 language.txt 檔案,您將得到以下輸出。

輸出

Hindi
English
Chinese
Spanish

我們將研究各種技術,將短語“是一種很好的學習語言”新增到我們的 language.txt 檔案每一行的末尾。

使用 sed

在 Linux 中,sed(流編輯器)是一個強大的內建實用程式。它可用於執行檔案功能,例如查詢和替換、搜尋、插入和刪除。

示例

讓我們來看一個簡單的例子,使用`sed`命令來完成給定的任務:

$ sed -e 's/$/ is a good language to learn/' -i language.txt
$ cat language.txt

藉助 sed 命令,您可以在檔案每一行之後新增一個字串,您可以使用 cat 命令檢視輸出。

輸出

Hindi is a good language to learn
English is a good language to learn
Chinese is a good language to learn
Spanish is a good language to learn

使用 sed 執行許多檔案功能既簡單又快捷,因為我們甚至無需開啟檔案即可更改檔案。

使用 awk

藉助 awk,我們可以透過編寫語句來建立簡單的程式,這些語句指定要在我們檔案的每一行中查詢的文字模式以及發現匹配時要執行的操作。

大多數 Unix 版本和 Unix 都包含指令碼語言 awk。它是 Aho、Weinberger 和 Kernighan 的縮寫,他們是 1977 年參與其構建的開發人員。

示例

$ awk '$0=$0" is a good language to learn"' language.txt > languages.txt

藉助以上命令,我們可以在檔案的每一行之後新增一個字串,並將輸出儲存到 languages.txt 檔案中。您可以使用 cat 命令檢視 languages.txt 的內容。

輸出

Hindi is a good language to learn
English is a good language to learn
Chinese is a good language to learn
Spanish is a good language to learn

使用 perl

perl(實用提取和報告語言)的最初目的是掃描任意文字檔案,從中提取資料,並使用這些資訊建立報告。它結合了 sed、awk 和 sh 的一些優點,使我們更容易更方便地為常見問題找到快速解決方案。

示例

讓我們執行 perl 命令:

$ perl -pi -e 's/$/\ is a good language to learn./' language.txt

輸出

Hindi is a good language to learn.
English is a good language to learn.
Chinese is a good language to learn.
Spanish is a good language to learn

該命令的輸出不會顯示在標準輸出上。要檢視更改,我們可以直接對輸入檔案使用 cat 命令。我們不需要建立新檔案,因為 perl 直接對輸入檔案進行更改。

使用 echo

眾所周知,echo 命令將文字輸出到標準輸出 (STDOUT)。

雖然 echo 命令的行為在不同的 shell 之間略有不同,但我們將在這裡重點介紹 bash 內建版本。

讓我們將 cat 命令與執行 echo 命令結合起來:

示例

$ cat language.txt | while read line; do echo ${line}$" is a good language to learn."; done

輸出

Hindi is a good language to learn.
English is a good language to learn.
Chinese is a good language to learn.
Spainsh is a good language to learn.

結論

在本文中,我們學習瞭如何在 Linux 中在檔案的每一行末尾新增字串。為此,我們使用了 sed、awk、echo、perl 和其他命令。因為我們研究的方法工作方式相似,所以我們選擇哪種方法取決於個人喜好。

更新於:2022年11月21日

2K+ 次檢視

啟動你的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.