ウェブサイト検索

LFCS #1: Linux でのファイル操作に「sed」コマンドを使用する方法


Linux Foundation は、世界中の個人が Linux システムの初級から中級のシステム管理タスクの認定を取得できるように支援することを目的とした新しいプログラムである LFCS (Linux Foundation Certified Sysadmin) 認定を発表しました。

これには、実行中のシステムとサービスのサポート、直接のトラブルシューティングと分析、問題をエンジニアリング チームにエスカレーションするための賢明な意思決定が含まれます。

2023 年 8 月 11 日の最後の改訂時点で、Google は公式に宣言した2023 年 5 月 11 日の発効日に合わせて、ドメインとコンピテンシーを細心の注意を払って考慮しました。 Linux財団。

このシリーズは、LFCS (Linux Foundation Certified Sysadmin) の準備、パート 1 から 33 というタイトルで、次の内容をカバーします。次のトピック:

Part 1

「Sed」コマンドを使用して Linux でファイルを操作する方法

Part 2

Linux に Vi/Vim をインストールして使用する方法

Part 3

Linux でファイルとディレクトリを圧縮し、ファイルを検索する方法

Part 4

ストレージデバイスのパーティショニング、ファイルシステムのフォーマット、およびスワップパーティションの構成

Part 5

Linux でのローカルおよびネットワーク (Samba および NFS) ファイルシステムのマウント/アンマウント

Part 6

パーティションを RAID デバイスとして組み立てる – システムバックアップの作成と管理

Part 7

システム起動プロセスとサービス (SysVinit、Systemd、および Upstart) の管理

Part 8

ユーザーとグループ、ファイル権限、Sudo アクセスを管理する方法

Part 9

Yum、RPM、Apt、Dpkg、Aptitude、Zypper を使用した Linux パッケージ管理

Part 10

基本的なシェル スクリプトとファイル システムのトラブルシューティングを学習する

Part 11

vgcreate、lvcreate、および lvextend コマンドを使用して LVM を管理および作成する方法

Part 12

インストールされたヘルプドキュメントとツールを使用して Linux を探索する方法

Part 13

Grand Unified Bootloader (GRUB) を構成およびトラブルシューティングする方法

Part 14

Linux プロセスのリソース使用状況を監視し、ユーザーごとにプロセス制限を設定

Part 15

Linux システムでカーネル ランタイム パラメータを設定または変更する方法

Part 16

Linux での SELinux または AppArmor を使用した強制アクセス制御の実装

Part 17

ユーザーとグループのアクセス コントロール リスト (ACL) とディスク クォータを設定する方法

Part 18

ネットワークサービスのインストールと起動時の自動起動の構成

Part 19

匿名ログインを許可する FTP サーバーのセットアップに関する究極のガイド

Part 20

基本的な再帰キャッシュ DNS サーバーのセットアップとドメインのゾーンの構成

Part 21

MariaDB データベース サーバーのインストール、セキュリティ保護、パフォーマンス チューニングの方法

Part 22

ファイル システム共有用に NFS サーバーをインストールおよび構成する方法

Part 23

SSL 証明書を使用した名前ベースの仮想ホスティングで Apache をセットアップする方法

Part 24

Linux でサービスへのリモート アクセスを有効にするために iptables ファイアウォールをセットアップする方法

Part 25

Linux を静的および動的にトラフィックを処理するルーターに変える方法

Part 26

Cryptsetup ツールを使用して暗号化されたファイルシステムとスワップをセットアップする方法

Part 27

システムの使用状況、停止を監視し、Linux サーバーのトラブルシューティングを行う方法

Part 28

パッケージをインストールまたは更新するためにネットワーク リポジトリをセットアップする方法

Part 29

ネットワークのパフォーマンス、セキュリティ、トラブルシューティングを監査する方法

Part 30

仮想マシンとコンテナをインストールおよび管理する方法

Part 31

プロジェクトを効率的に管理するために Git の基本を学ぶ

Part 32

Linux で IPv4 および IPv6 アドレスを構成するための初心者ガイド

Part 33

Ubuntu でネットワーク ボンディングとブリッジングを作成するための初心者ガイド

この投稿は、33 のチュートリアル シリーズのパート1であり、LFCS 認定試験に必要な領域と能力について説明します。そうは言っても、端末を起動して始めましょう。

Linux でのテキスト ストリームの処理

Linux は、プログラムへの入力とプログラムからの出力を文字のストリーム (またはシーケンス) として扱います。リダイレクトとパイプを理解するには、まず 3 つの最も重要なタイプの I/O (入力および出力) ストリームを理解する必要があります。これらは実際には特殊ファイル (UNIX と Linux の慣例により、データ ストリームと周辺機器、またはデバイス ファイル) です。も通常のファイルとして扱われます)。

> (リダイレクト演算子) と | (パイプライン演算子) の違いは、前者はコマンドをファイルに接続するのに対し、後者はコマンドの出力を別のコマンドに接続することです。指示。

command > file
command1 | command2

リダイレクション演算子はファイルをサイレントに作成または上書きするため、細心の注意を払って使用する必要があり、決してパイプラインと間違えないようにしてください。

Linux および UNIX システムにおけるパイプの利点の 1 つは、パイプに関連する中間ファイルがないことです。最初のコマンドの stdout がファイルに書き込まれ、2 番目のコマンドによって読み取られることがありません。

次の練習問題では、「幸せな子 」(作者匿名)という詩を使用します。

sedコマンドの使用

sed という名前は、ストリーム エディターの略称です。この用語に馴染みのない方のために説明すると、ストリーム エディターは、入力ストリーム (ファイルまたはパイプラインからの入力) で基本的なテキスト変換を実行するために使用されます。

ファイル内の小文字を大文字に変更する

sed の最も基本的な (そして一般的な) 使用法は、文字の置換です。まず、出現するすべての小文字 y を大文字の Y に変更し、出力を ahappychild2.txt にリダイレクトします。

g フラグは、sed がファイルの各行の term のすべてのインスタンスの置換を実行する必要があることを示します。このフラグを省略すると、sed は各行で最初に出現した用語のみを置換します。

Sed の基本構文:
sed ‘s/term/replacement/flag’ file
私たちの例:
sed ‘s/y/Y/g’ ahappychild.txt > ahappychild2.txt

ファイル内の Word の検索と置換

特殊文字 (/\& など) を検索または置換する場合は、用語内でそれをエスケープする必要があります。または、バックスラッシュを使用して文字列を置換します。

たとえば、単語 and をアンパサンドに置き換えます。同時に、単語 I が行の先頭で最初に見つかった場合、その単語を You に置き換えます。

sed 's/and/\&/g;s/^I/You/g' ahappychild.txt

上記のコマンドの ^ (キャレット記号) は、行の先頭を表すために使用されるよく知られた正規表現です。

ご覧のとおり、セミコロンで区切ってセットを一重引用符で囲むことで、2 つ以上の置換コマンドを組み合わせる (およびその中で正規表現を使用する) ことができます。

ファイルから選択した行を印刷する

sed のもう 1 つの用途は、ファイルの選択した部分を表示 (または削除) することです。次の例では、6 月 8 日の /var/log/messages の最初の 5 行を表示します。

sed -n '/^Jun  8/ p' /var/log/messages | sed -n 1,5p

デフォルトでは、sed はすべての行を出力することに注意してください。 -n オプションを使用してこの動作をオーバーライドし、パターンに一致するファイル (またはパイプ) の部分のみを印刷するように sed に指示できます (p で示されます)。 (最初のケースでは行の先頭にある 6 月 8 日、2 番目のケースでは 1 行目から 5 行目まで)。

最後に、スクリプトまたは構成ファイルを検査するときに、コード自体を検査してコメントを省略すると便利です。次の sed ワンライナーは、空白行 (d) または # で始まる行を削除します (| 文字はブール値の OR< を示します)。 2 つの正規表現の間にあります)。

sed '/^#\|^$/d' apache2.conf

uniqコマンド

uniq コマンドを使用すると、ファイル内の重複行をレポートまたは削除し、デフォルトで stdout に書き込むことができます。 uniq は、隣接しない限り繰り返し行を検出しないことに注意してください。

したがって、uniq は一般に、前述の sort (テキスト ファイルの行を並べ替えるのに使用されます) と一緒に使用されます。デフォルトでは、sort は最初のフィールド (スペースで区切られている) をキー フィールドとして受け取ります。別のキー フィールドを指定するには、-k オプションを使用する必要があります。

Uniq コマンドの例

du -sch /path/to/directory/* コマンドは、指定されたディレクトリ内のサブディレクトリおよびファイルごとのディスク容量の使用量を人間が判読できる形式で返します (ディレクトリごとの合計も表示されます)。出力をサイズ順に並べますが、サブディレクトリとファイル名順に並べます。

次のコマンドを使用して、サイズで並べ替えることができます。

du -sch /var/* | sort –h

各行の最初の 6 文字 (-w 6) (日付はが指定されています)、各出力行の先頭に次のコマンドを出現回数 (-c) として付けます。

cat /var/log/mail.log | uniq -c -w 6

最後に、sortuniq を (通常どおり) 組み合わせることができます。寄付者、寄付日、金額のリストが記載された次のファイルについて考えてみましょう。ユニークドナーが何人いるかを知りたいとします。

次の cat コマンドを使用して、最初のフィールドを切り取り (フィールドはコロンで区切られます)、名前で並べ替えて、重複行を削除します。

cat sortuniq.txt | cut -d: -f1 | sort | uniq

grepコマンド

grep コマンドは、テキスト ファイルまたは (コマンド出力) で指定された正規表現の出現を検索し、一致を含む行を標準出力に出力します。

grep コマンドの例

/etc/passwd からのユーザー gacanepa の情報を、大文字と小文字を区別せずに表示します。

grep -i gacanepa /etc/passwd

名前が rc で始まり、その後に任意の 1 つの数字が続く /etc の内容をすべて表示します。

ls -l /etc | grep rc[0-9]

trコマンドの使用法

tr コマンドを使用すると、stdin から文字を変換 (変更) または削除し、結果を stdout に書き込むことができます。

sortuniq.txt ファイル内のすべての小文字を大文字に変更します。

cat sortuniq.txt | tr [:lower:] [:upper:]

ls –l の出力の区切り文字を 1 つのスペースのみに圧縮します。

ls -l | tr -s ' '

カットコマンドの使用法

Cut コマンドは、(標準入力またはファイルから) 入力行の一部を抽出し、バイト数 (-b オプション)、文字数 (-c)、またはフィールド (-f)。

この最後のケース (フィールドに基づく) では、デフォルトのフィールド区切り文字はタブですが、-d オプションを使用して別の区切り文字を指定できます。

カットコマンドの例

ユーザー アカウントとユーザー アカウントに割り当てられたデフォルト シェルを /etc/passwd から抽出します (–d オプションを使用すると、フィールド区切り文字と –f スイッチは、どのフィールドが抽出されるかを示します。

cat /etc/passwd | cut -d: -f1,7

要約すると、最後のコマンドの出力の最初と 3 番目の空でないファイルで構成されるテキスト ストリームを作成します。最初のフィルタとして grep を使用してユーザー gacanepa のセッションをチェックし、次に区切り文字を 1 つのスペースのみに絞り込みます (tr -s ' ' )。

次に、1 番目と 3 番目のフィールドをカット で抽出し、最後に一意であることを示す 2 番目のフィールド (この場合は IP アドレス) で並べ替えます。

last | grep gacanepa | tr -s ' ' | cut -d' ' -f1,3 | sort -k2 | uniq

上記のコマンドは、希望に応じてフィルター処理されたデータを取得するために、複数のコマンドとパイプをどのように組み合わせることができるかを示しています。 1 つのコマンドから次のコマンドにパイプライン処理される出力を確認するために、部分ごとに実行することもできます (ちなみに、これは素晴らしい学習体験になります!)。

まとめ

この例 (現在のチュートリアルの残りの例と同様) は、一見するとあまり役に立たないように見えますが、Linux からファイルを作成、編集、操作するために使用されるコマンドを試し始めるには良い出発点となります。コマンドライン。

以下にお気軽にご質問やコメントを残してください – 大変感謝いたします。

LFCS 電子書籍は現在購入可能です。今すぐコピーを注文して、認定 Linux システム管理者になるための旅を始めましょう!

Product Name Price Buy
The Linux Foundation’s LFCS Certification Preparation Guide $19.99 [Buy Now]

最後になりましたが、次のリンクを使用して試験バウチャーを購入することを検討してください。これにより少額の手数料が得られ、この書籍を常に最新の状態に保つことができます。