Linuxのsedコマンドのサンプルコード共有の詳細説明
はじめに
sed は、コンテンツを一度に 1 行ずつ処理するオンライン エディタ です。処理中、現在処理されている行は「パターン スペース」と呼ばれる一時バッファに保存され、処理が完了すると sed コマンドがバッファの内容を処理します。画面。次に、次の行を処理し、ファイルの終わりまで繰り返します。リダイレクトを使用して出力を保存しない限り、ファイルの内容は変更されません。 Sed は主に、1 つまたは複数のファイルの書き込み変換プログラムなどを簡素化するために使用されます。
sed 使用パラメータ
[root@www ~]# sed [-nefr] [动作]
オプションとパラメータ:
-n: サイレント モードを使用します。通常の sed の使用法では、STDIN からのすべてのデータが端末にリストされます。ただし、-n パラメータを追加すると、sed によって特別に処理された行 (またはアクション) のみがリストされます。
-e: コマンドラインモードで sed アクションを直接編集します。
-f: sed アクションをファイルに直接書き込みます。 -f filename は filename で sed アクションを実行できます。
-r: sed のアクションをサポートします。拡張正規表現の構文。 (デフォルトは基本的な正規表記構文です)
-i: 読み込んだファイルの内容を端末に出力するのではなく、直接変更します。
アクションの説明: [n1[,n2]]関数
n1、n2: 存在しない場合があります。通常は「アクションの行数を選択する」ことを表します。たとえば、アクションが 10 ~ 20 行である必要がある場合などです。 10,20 [ActionBehavior] ]
function:
a:New、aの後に文字列を続けることができ、これらの文字列は新しい行(現在は次の行)に表示されます~
c:置換, c の後に文字列を続けることができ、これらの文字列で n1 と n2 の間の行を置き換えることができます。
d: delete、これは削除であるため、通常、d の後にはドンドンは続きません。
i: insert、i の後に文字列を続けることができ、これらの文字列は新しい行 (現在は前の行) に表示されます。 ;
p: 印刷、つまり選択したデータを印刷します。通常、p はパラメータ sed -n~
s: replace とともに実行されます。置換作業を直接実行できます。通常、このアクションは通常の表記法と組み合わせることができます。例: 1,20s/old/new/g 以上です。
行単位で追加・削除
/etc/passwdの内容を列挙し、行番号を出力します 同時に2〜5行目を削除してください!
[root@www ~]# nl /etc/passwd | sed '2,5d' 1 root:x:0:0:root:/root:/bin/bash 6 sync:x:5:0:sync:/sbin:/bin/sync 7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown .....(后面省略).....
sed のアクションは '2,5d'、つまり d は削除です! 2行目から5行目を削除したため、表示されるデータには2行目から5行目は含まれていません~ なお、本来は sed -e を発行する必要がありますが、-e なしでも動作します。同時に、sed に続くアクションは 2 つの一重引用符 ''! で囲む必要があることにも注意してください。
2行目を削除するだけ
nl /etc/passwd | sed '2d'
3行目から最終行までを削除するには
nl /etc/passwd | sed '3,$d'
2行目の後に「改行テキスト?」を追加(つまり3行目に追加)!
[root@www ~]# nl /etc/passwd | sed '2a new line text' 1 root:x:0:0:root:/root:/bin/bash 2 bin:x:1:1:bin:/bin:/sbin/nologin new line text 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin .....(后面省略).....
2行目
nl /etc/passwd | sed '2i new line text'
の前に、2〜5行目の内容を「2〜5番なし」に置き換えて行単位で表示したい場合はどうすればよいでしょうか?
[root@www ~]# nl /etc/passwd | sed '2,5c No 2-5 number' 1 root:x:0:0:root:/root:/bin/bash No 2-5 number 6 sync:x:5:0:sync:/sbin:/bin/sync .....(后面省略).....
このメソッドを通じて、データの行全体を置き換えることができます。
/etc/passwd ファイルの行 5 ~ 7 のみをリストします
[root@www ~]# nl /etc/passwd | sed -n '5,7p' 5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 6 sync:x:5:0:sync:/sbin:/bin/sync 7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sed の行ごとの表示機能を使用して、ファイル内の特定の行番号を選択して表示できます。
データの検索と表示
rootキーワードを含む行を/etc/passwdで検索nl /etc/passwd | sed '/root/p'
1 root:x:0:0:root:/root:/bin/bash
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh
3 bin:x:2:2:bin:/bin:/bin/sh
4 sys:x:3:3:sys:/dev:/bin/sh
5 sync:x:4:65534:sync:/bin:/bin/sync
....下面忽略
ログイン後にコピーrootが見つかった場合は、すべての行を出力するだけでなく、一致する行も出力します。
nl /etc/passwd | sed '/root/p' 1 root:x:0:0:root:/root:/bin/bash 1 root:x:0:0:root:/root:/bin/bash 2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh 3 bin:x:2:2:bin:/bin:/bin/sh 4 sys:x:3:3:sys:/dev:/bin/sh 5 sync:x:4:65534:sync:/bin:/bin/sync ....下面忽略
-n を使用すると、テンプレートを含む行のみが出力されます。
nl /etc/passwd | sed -n '/root/p' 1 root:x:0:0:root:/root:/bin/bash
データを検索して削除
/etc/passwd内のrootを含む行を全て削除し、他の行を出力
nl /etc/passwd | sed '/root/d' 2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh 3 bin:x:2:2:bin:/bin:/bin/sh ....下面忽略 #第一行的匹配root已经删除了
コマンドを検索して実行
東のパターンに一致する行を見つけたら、
/etc/passwdを検索root に対応する行を見つけ、中括弧で囲まれた一連のコマンドを実行し、各コマンドをセミコロンで区切って、bash を blueshell に置き換えて、次の行を出力します:
nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p}' 1 root:x:0:0:root:/root:/bin/blueshell
/etc/passwd のみを置き換える場合 最初の bash キーワードは blueshell で、
Exitnl /etc/passwd | sed -n '/bash/{s/bash/blueshell/;p;q}'
1 root:x:0:0:root:/root:/bin/blueshell
データの検索と置換
sed は、行全体の処理モードに加えて、行単位で部分的なデータを検索および置換することもできます。基本的に sed の検索と置換は vi の検索と置換に非常に似ています。これは次のようになります:
sed 's/置換される文字列/新しい文字列/g'
まず元の情報を確認し、/sbin/
ifconfig を使用して IP をクエリします。
[root@www ~]# /sbin/ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:90:CC:A6:34:84 inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::290:ccff:fea6:3484/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 .....(以下省略).....
本机的ip是192.168.1.100。
将 IP 前面的部分予以删除
[root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' 192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
接下来则是删除后续的部分,亦即: 192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
将 IP 后面的部分予以删除
[root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g' 192.168.1.100
多点编辑
一条sed命令,删除/etc/passwd第三行到末尾的数据,并把bash替换为blueshell
nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/'
1 root:x:0:0:root:/root:/bin/blueshell
2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh
-e表示多点编辑,第一个编辑命令删除/etc/passwd第三行到末尾的数据,第二条命令搜索bash替换为blueshell。
直接修改文件内容(危险动作)
sed 可以直接修改文件的内容,不必使用管道命令或数据流重导向! 不过,由於这个动作会直接修改到原始的文件,所以请你千万不要随便拿系统配置来测试! 我们还是使用下载的 regular_express.txt 文件来测试看看吧!
利用 sed 将 regular_express.txt 内每一行结尾若为 . 则换成 !
[root@www ~]# sed -i 's/\.$/\!/g' regular_express.txt
利用 sed 直接在 regular_express.txt 最后一行加入『# This is a test』
[root@www ~]# sed -i '$a # This is a test' regular_express.txt
由于 $ 代表的是最后一行,而 a 的动作是新增,因此该文件最后新增『# This is a test』!
sed 的『 -i 』选项可以直接修改文件内容,这功能非常有帮助!举例来说,如果你有一个 100 万行的文件,你要在第 100 行加某些文字,此时使用 vim 可能会疯掉!因为文件太大了!那怎办?就利用 sed 啊!透过 sed 直接修改/取代的功能,你甚至不需要使用 vim 去修订!
以上がLinuxのsedコマンドのサンプルコード共有の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Centosとubuntuの重要な違いは次のとおりです。起源(CentosはRed Hat、for Enterprises、UbuntuはDebianに由来します。個人用のDebianに由来します)、パッケージ管理(CentosはYumを使用し、安定性に焦点を当てます。チュートリアルとドキュメント)、使用(Centosはサーバーに偏っています。Ubuntuはサーバーやデスクトップに適しています)、その他の違いにはインストールのシンプルさが含まれます(Centos is Thin)

Centosのインストール手順:ISO画像をダウンロードし、起動可能なメディアを燃やします。起動してインストールソースを選択します。言語とキーボードのレイアウトを選択します。ネットワークを構成します。ハードディスクをパーティション化します。システムクロックを設定します。ルートユーザーを作成します。ソフトウェアパッケージを選択します。インストールを開始します。インストールが完了した後、ハードディスクから再起動して起動します。

Centosは、上流の分布であるRhel 8が閉鎖されたため、2024年に閉鎖されます。このシャットダウンはCentos 8システムに影響を与え、更新を継続し続けることができません。ユーザーは移行を計画する必要があり、提案されたオプションには、Centos Stream、Almalinux、およびRocky Linuxが含まれ、システムを安全で安定させます。

Centosシステムの下でのGitlabのバックアップと回復ポリシーデータセキュリティと回復可能性を確保するために、Gitlab on Centosはさまざまなバックアップ方法を提供します。この記事では、いくつかの一般的なバックアップ方法、構成パラメーター、リカバリプロセスを詳細に紹介し、完全なGitLabバックアップと回復戦略を確立するのに役立ちます。 1.手動バックアップGitlab-RakeGitlabを使用:バックアップ:コマンドを作成して、マニュアルバックアップを実行します。このコマンドは、gitlabリポジトリ、データベース、ユーザー、ユーザーグループ、キー、アクセスなどのキー情報をバックアップします。デフォルトのバックアップファイルは、/var/opt/gitlab/backupsディレクトリに保存されます。 /etc /gitlabを変更できます

DockerはLinuxカーネル機能を使用して、効率的で孤立したアプリケーションランニング環境を提供します。その作業原則は次のとおりです。1。ミラーは、アプリケーションを実行するために必要なすべてを含む読み取り専用テンプレートとして使用されます。 2。ユニオンファイルシステム(UnionFS)は、違いを保存するだけで、スペースを節約し、高速化する複数のファイルシステムをスタックします。 3.デーモンはミラーとコンテナを管理し、クライアントはそれらをインタラクションに使用します。 4。名前空間とcgroupsは、コンテナの分離とリソースの制限を実装します。 5.複数のネットワークモードは、コンテナの相互接続をサポートします。これらのコア概念を理解することによってのみ、Dockerをよりよく利用できます。

CentOSハードディスクマウントは、次の手順に分割されます。ハードディスクデバイス名(/dev/sdx)を決定します。マウントポイントを作成します( /mnt /newdiskを使用することをお勧めします);マウントコマンド(Mount /dev /sdx1 /mnt /newdisk)を実行します。 /etc /fstabファイルを編集して、永続的なマウント構成を追加します。 Umountコマンドを使用して、デバイスをアンインストールして、プロセスがデバイスを使用しないことを確認します。

Dockerデスクトップの使用方法は? Dockerデスクトップは、ローカルマシンでDockerコンテナを実行するためのツールです。使用する手順には次のものがあります。1。Dockerデスクトップをインストールします。 2。Dockerデスクトップを開始します。 3。Docker Imageを作成します(DockerFileを使用); 4. Docker画像をビルド(Docker Buildを使用); 5。Dockerコンテナを実行します(Docker Runを使用)。

Centosは廃止されました、代替品には次のものが含まれます。1。RockyLinux(最高の互換性)。 2。アルマリン(Centosと互換性); 3。Ubuntuサーバー(設定が必要); 4。RedHat Enterprise Linux(コマーシャルバージョン、有料ライセンス); 5。OracleLinux(CentosとRhelと互換性があります)。移行する場合、考慮事項は次のとおりです。互換性、可用性、サポート、コスト、およびコミュニティサポート。
