ホームページ  >  記事  >  運用・保守  >  Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼転載
2019-08-23 17:55:392169ブラウズ

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

sed コマンドは広く使用されており、使いやすく、迅速なテキスト処理のための強力なツールです。実際のところ、スキルはそれほど多くはなく、それを記憶して使用することが最適な学習チャネルであり、難しいスキルです。しかし、高度な機能がたくさんあるので複雑です。この記事では、sed の高度な機能には焦点を当てず、一般的に使用されるいくつかの操作のみを説明します。

これを使用すると、vim のいくつかの概念と一致していることがわかります。正規表現の構文は基本的に同じであり、学習コストはそれほどかかりません。個人のビジョンと作業効率の観点から、sed コマンドはプログラマーが習得しなければならない重要なツールです。

その場で Google を使用できると言う人は、テキストを Excel にコピーしてゆっくりと作業することにほとんど慣れており、大量のファイルに遭遇するとさらに混乱します。この記事は、あなた向けに書かれたものではありません。

#簡単な紹介

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

図に示すように、単純な sed コマンドには、パラメータ、範囲、およびパラメータの 3 つの主要な部分が含まれています。手術 。操作対象のファイルをコマンドラインの最後に直接ハングさせることができます。コマンドラインに加えて、sed では -f パラメータを使用して sed スクリプトを指定することもできます。これは高度な使用法であるため、詳しい説明は省略します。

関連する推奨事項: "

linux チュートリアル "

いくつかのコマンド例を何度も繰り返します。賢い人なら必ずルールを見つけるでしょうが、場合によってはルールを見つけられないこともあります。説明する必要すらありません。

パラメータ

-n このパラメータは、--quint または --silent を意味します。実行プロセスの出力が無視され、結果のみが出力されることを示します。

私たちが一般的に使用するもう 1 つのパラメータがあります: -i。

このパラメータを使用すると、すべての変更が元のファイルに対して実行されます。出力は元のファイルを上書きします。非常に危険ですので、注意してください。

Range

1,4 は、ファイルの 1、2、3、4 行目の内容を検索することを意味します。

この範囲の指定は非常にスピリチュアルなものですので、以下の例をご覧ください(画像の範囲部分はご自身で置き換えてください)。

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

範囲選択では、通常のマッチングも使用できます。以下の例を参照してください。

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

#直観のために、次のコマンドは上記の説明に 1 つずつ対応しています。範囲と操作の間にスペースを入れることもできます。

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

操作

最も一般的に使用される操作は p で、これは印刷を意味します。たとえば、次の 2 つのコマンドは同等です。

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

印刷に加えて、一般的に使用される次の操作もあります。

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

a、i、c などの操作は基本的なものですが、あまり使用されないため、紹介しません。説明のためにまだいくつかのコマンドを使用します。

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

sed コマンドでできることを見て、コマンドをクリックして体験してみましょう。

# で始まる行と空白行をすべて削除します。

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

最も一般的に使用されるものは、以下のようなものです。

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

は、グループ ファイルの 2 行目を出力することを意味します。

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

では、複数のコマンドを一度に実行したいが、sed スクリプト ファイルを作成したくない場合はどうすればよいでしょうか? その場合は、-e パラメータを追加する必要があります。 。

sed の操作単位は行です。

置換モード

上記は sed コマンドの一般的な一致モードですが、特定の値を検索して置換する強力な置換モードもあります。その中に、結果を出力します。置換モードを使用する場合、-n パラメーターが使用されることはほとんどありません。

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット#置換モードには多くのパラメータがありますが、最初と 5 番目の部分は省略できます。置換後は全文が出力されます。

前半は一部の範囲を一致させるために使用され、後半は置換アクションを実行します。

スコープ

この範囲は、上記の範囲構文と似ています。以下の例を参照してください。

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット具体的なコマンドは次のとおりです:

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

指令

這裡的指令是指s。也就是substitute的意思。

尋找符合

查找部分會找到要被取代的字串。這部分可以接受純粹的字串,也可以接受正規表示式。看下面的例子。

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

指令類似:

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

#取代

是時候把找出的字串給替換掉了。本部分的內容將取代尋找符合部分找到的內容。

可惜的是,這部分不能使用正規。常用的就是精確替換。例如把a替換成b。

但也有進階功能。和java或python的正規api類似,sed的替換同樣有Matched Pattern的意義,同樣可以得到Group,不深究。常用的替位符,就是。號,再重複一遍。當它用在替換字串中的時候,代表的是原始的查找匹配資料。

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

下面這條指令,會把檔案中的每一行,使用引號包圍起來。

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

flag 參數

這些參數可以單一使用,也可以使用多個,只介紹最常用的。

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

看兩個指令的語法:

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

#由於正規的關係,很多字元需要轉義。你會在腳本裡做些很多\\,\*之類的處理。你可以使用|^@!四個字元來替換\。

例如,下面五個指令是一樣的。

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

注意:前半部的範圍是不能使用這種方式的。我習慣使用符號@。

其他

正規表示式

可以看到,正規表示式在命令列中無所不在。以下,緊做簡要說明。

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

參數i

上面已經簡單介紹了參數i,它的作用是讓操作在原始檔案執行。無論你執行了啥,原始檔案都將會被覆蓋。這是非常危險的。

透過加入一個參數,可以將原始檔案做個備份。

sed -i.bak 's/a/b/' file

以上指令會對原始file檔案生效,並產生一個file.bak檔案。強烈建議使用i參數同時指定bak檔。

我們透過兩個指令,來稍微看下sed和其他指令組合起來的威力。

輸出長度不小於50個字元的行

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

#統計中有每個單字出現了多少次

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

#尋找目錄中的py文件,刪除所有行級註解

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

#查看第5-7行和10-13行

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

只輸出ip位址

Linux 実稼働環境で最も一般的に使用される「Sed」テクニックのセット

以上がLinux 実稼働環境で最も一般的に使用される「Sed」テクニックのセットの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjianshu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。