--sedストリームエディタのシェルスクリプトの武器

Linuxは、核となるアイデアである:すべてがファイルです。これらの文書では、テキストファイルは、重要な位置を占め、すべてのシステム設定、ソフトウェアのパラメータと同様に、基本的なコマンドライン操作を変更するには調整し、「テキスト」上で動作しています。テキストを操作するには、確かに、テキストエディタを分離することはできません。

テキストファイル、例えばフルスクリーンモードで編集して保存テキスト終了操作を開くために、等VI、VIM、ナノ;その他:Linuxシステム、2つのカテゴリに分類テキストエディタで、一つはフルスクリーンのようなエディタであります追加されるなど、削除、置き換え、検索、インサートを含むテキストの操作を完了するための一連のコマンド経由などのsed、grepを、awkは、ファイルを直接開いていない、コマンドライン、:クラスはストリームエディタ、などのようにあります。

SEDは、それが処理テキスト単位で優れたストリーム・エディタである、その一般的なプロセスフローは次の通り:まず、ファイルの最初の行を読み取りバッファ(領域のメモリ)に加工することが、その後のフォロー操作のためのコマンドラインは、これらの操作はサイクルを完了するために、表示画面に、操作が完了するなど、削除、バッファからの出力を置き換え、検索が含まれます。その後、さらにバッファにテキストの2行目を読み出し、第二のサイクルが始まります。ように、すべての行が処理されるまで。このとき、バッファから画面表示の内容とは全く元のファイルを上書きしません。上記バッファ、学名:パターンスペース。第二は、リダイレクトを使用している、変更されたテキストは、別のファイルに保存され、あなたが変更されたコンテンツを生き残るために必要がある場合は、二つの方法、-iパラメータを使用して1、直接原稿を修正があります。

テキストは、多くの機能を動作させるための支援をsedのが、最も一般的な機能を交換することですが、この記事では、より多くの機能と使用方法もマニュアルを参照して、交換用の機能の使用に焦点を当てています。

sedのツールコマンドの形式は次のとおりです。

sed 选项 子命令	文件1,文件2,文件3……

共通オプション:

-e		在命令行模式下进行sed动作编辑。默认值
-f		从文件中读取需要执行的sed动作。
-i		不经过缓冲区,直接修改原文件里的内容。
-n		只打印匹配到的,或者经过后续的指令处理过的行。
-r		增加支持扩展表达式

共通サブ:
S /ターゲットテキスト/新しいテキストが/各列に、ターゲットテキスト[]の最初の一致が新しいテキスト[]で置換されている
S /対象テキスト/新しいテキスト/ gの各列において、一致へ全て[テキスト]特定の新しいテキストを置き換える[]
各列のS /対象テキスト/新しいテキスト/ン、最初に一致しましたNすべてのターゲットテキストは、[] []とした後、新しいテキストに置き換えられ
、S /対象テキスト/新しいテキスト/ Nは、各列に、最初に一致しましたNターゲット[テキスト]は、[新規テキスト]を置き換えます

ファイルまたはファイルリスト、sedのサポートハンドル複数のファイルは、次の2つのファイル間のカンマ区切りを使用する必要があります。

アプリケーション例のsed

テストテキストは、次のとおりです。

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
saslauth:x:997:76:Saslauthd user:/run/saslauthd:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
  1. また、現在の行の第一の内容にマッチします
$ sed 's/root/admin/' test_file
admin:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/admin:/sbin/nologin
  1. 第2のコンテンツへの現在の行をマッチング:
$ sed 's/root/admin/2' test_file 
root:x:0:0:admin:/root:/bin/bash
  1. 現在の行の全内容が一致するように置き換えます。
$ sed 's/root/admin/g' test_file
admin:x:0:0:admin:/admin:/bin/bash
operator:x:11:0:operator:/admin:/sbin/nologin
  1. 第二以降のすべてのコンテンツに現在の行をマッチング:
sed 's/root/admin/2g' test_file 
root:x:0:0:admin:/admin:/bin/bash

継続するには......

公開された13元の記事 ウォンの賞賛0 ビュー205

おすすめ

転載: blog.csdn.net/sinat_28296423/article/details/104028749