ホームページ >運用・保守 >Linuxの運用と保守 >Linux での sed コマンドの使用法をまとめます。

Linux での sed コマンドの使用法をまとめます。

藏色散人
藏色散人転載
2021-11-15 15:55:002539ブラウズ

Linux での sed コマンドの使用方法の概要

Linux での sed コマンド:

1 sed の最初の紹介

sedエディタはストリームエディタと呼ばれ、vimなどの対話型テキストエディタとは異なり、コマンドに従ってデータストリーム上のデータを処理します。次の操作が実行されます:

  • 入力から一度に 1 行のデータを読み取ります (すべての行が読み取られるまでこの操作を繰り返します)

  • エディターのコマンド一致データによると、

  • コマンドに従ってデータ ストリーム内のデータを変更します。

  • 新しいデータを STDOUT に出力します。 (標準出力)

sed コマンドは、コマンド ラインから入力することも、コマンド ファイルから読み取ることもできます。

sed -e script 添加script中指定的命令
sed -f file 添加file中指定的命令

1.1 コマンド ラインで sed コマンドを定義する [推奨学習: linux ビデオ チュートリアル]

単純なテキスト置換の例を見てみましょう:

echo "hi,my name is xxx" | sed 's/xxx/kinsomy/'
#修改文件
sed 's/xxx/kinsomy/' data.txt
#执行多个命令 用-e选项,分号隔开
sed 's/xxx/kinsomy/; s/***/hhh/' data.txt

echo が出力したデータをパイプライン経由で sed に入力し、s コマンドを使用して最初のスラッシュ以降の一致するデータを 2 番目のスラッシュ以降のデータに置き換えます。

注: sed はテキスト ファイル内のデータを操作し、変更されたデータを STDOUT に出力するだけで、ファイル自体のデータは変更しません

1.2 ファイルからのコマンドの読み取り

再利用しやすくするために、ファイル script.sed に一連のコマンドを定義します。

s/*/a
s/x/b
s/-/+

# -f选项指定命令文件
sed -f script.sed data.txt

2 sed の基本

2.1 置換タグ

上記の例は echo "hi,my name is xxx" | sed 's/ xxx /kinsomy/' は各行で最初に一致したデータのみを置き換えますが、データの行に複数の一致がある場合、それらをすべて置き換えることはできません。

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/'
#输出
hi,my name is kinsomy, i am xxx

現時点では、いくつかの置換フラグを使用して置換モードを設定できます。置換トークンは置換文字列の後に続きます。

s/pattern/replacement/flags

番号、一致したデータが置き換えられる位置を示します

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/2'
#输出 第二个xxx被替换成kinsomy
hi,my name is xxx, i am kinsomy

g、一致したすべてのデータの置換を示します

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/g'
#输出 第二个xxx被替换成kinsomy
hi,my name is kinsomy, i am kinsomy

p、一致した行が出力されることを示します

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/p'
#输出
hi,my name is kinsomy, i am xxx
hi,my name is kinsomy, i am xxx
w,将替换后输出保存到指定文件
echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/w output.txt'

2.3 行アドレス指定

上で述べたように、sed コマンドはテキストを 1 行ずつ読み取り、特定の行を操作する場合、すべての行がスキャンされるまでデータの照合を実行します。今回は行アドレス指定を使用する必要があります。行アドレス指定には 2 つの形式があります。

数値形式は行を表します。

# 操作单行
$ sed '2s/xxx/***/' data.txt
# 操作一定行区间[2,4]
$ sed '2,4s/xxx/***/' data.txt
# 操作某行开始到最后[2,endline]
$ sed '2,$s/xxx/***/' data.txt

テキスト モード フィルター

まず /etc/passwd で kinsomy レコードを見つけてから、置換します。 csh で bash します。テキスト パターン フィルターは、正規表現と組み合わせると非常に強力になります。

sed '/kinsomy/s/bash/csh/' /etc/passwd

2.4 行の削除

削除コマンド d を使用してテキストを削除します。

# 删除所有文本
sed 'd' data.txt
# 删除单行
sed '2d' data.txt
# 删除行区间[2,3]
sed '2,3d' data.txt
# 删除行区间[2,endline]
sed '2,$d' data.txt
# 删除匹配文本aa的行
sed '/aa/d' data.txt
# 删除两个匹配文本之间的文本 匹配到1和3的行之间的文本全部被删除
sed '/1/,/3/d' data.txt

2.5 テキストの挿入と追加

Insert コマンド i は指定された行の前に新しい行を追加します

Append コマンド a は指定された行の後に新しい行を追加します

# 追加
echo "Line 2" | sed 'a\
pipe quote> Line 1'
#插入
echo "Line 2" | sed 'i\
pipe quote> Line 1'

2.6 行の変更

c コマンドはデータ行の変更に使用されます

# 修改第三行文本
sed '3c\
pipe quote> change line ' data.txt

2.7 変換コマンド

コマンド形式 sed 'y/inchar/outchar'

will inchar 内の文字は 1 対 1 対応で outchar 文字に変換されます

echo "This 1 is a test of 1 try." | sed 'y/123/456/'
# 输出
This 4 is a test of 4 try.

以上がLinux での sed コマンドの使用法をまとめます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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