ホームページ  >  記事  >  運用・保守  >  Linuxでファイルの特定の行を削除する方法

Linuxでファイルの特定の行を削除する方法

青灯夜游
青灯夜游オリジナル
2022-07-19 18:53:3119598ブラウズ

Linux では、sed コマンドを使用して、指定したファイルの特定の行を削除できます。「sed 'M,Nd' ファイル名」ステートメントを実行すると、M 行から N 行までの連続した行の内容が削除されます。 「sed ' N1d;N2d;N3d;$d' ファイル名」ステートメントは、不連続な行 N1、N2、および N3 の内容を削除できます。特定の文字を含む行を削除するには、「sed '/特定の文字/d' ファイル名」ステートメントを実行します。実行 「sed '/^特定の文字/d' ファイル名」ステートメントは、特定の文字で始まる行を削除できます。

Linuxでファイルの特定の行を削除する方法

#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。

Linux では、sed コマンドを使用して、指定したファイルの特定の行を削除できます。

sed は Stream Editor の略称で、Linux の基本的なテキスト変換に使用され、ファイル操作において重要なコマンドであるため、テキストの削除操作にも使用できます。

以下は、ほとんどの使用シナリオをカバーする sed コマンドの使用例です。これらは、sed コマンドを浅いものから深いものまで学習するのに役立ち、ファイルの特定の行を簡単かつ効率的に削除できるようになります。

まず、デモ ファイル sed-demo.txt を準備し、ファイルの内容を確認します。

cat sed-demo.txt

Linuxでファイルの特定の行を削除する方法

次に、sed コマンドを使用して実験できます。 。

1. 特定の行を削除します

まず、最初の行と最後の行を削除するなど、特定の行を削除することから始めます。 . 実はN行目です。

N 行目を削除するコマンド形式:

sed 'Nd' file

1 行目を削除してみましょう:

sed '1d' sed-demo.txt

Linuxでファイルの特定の行を削除する方法

Veryシンプルですよね?ここでは説明は省きますが、どの行の内容を削除したい場合はコマンド内の1を置き換えるだけでOKです。

次に、最後の行を表すためにどのような数字が使用されているのかという疑問が生じます。ちょっとしたヒントです。ドル記号 $ を使用して終わりを表すことができるため、最後の行を削除するコマンドは次のように記述できます:

sed '$d' sed-demo.txt

Linuxでファイルの特定の行を削除する方法

2. 特定の行の削除

#sed コマンドは、連続した行または不連続な行を削除できます。

連続する行を削除します。たとえば、行 5 から 7 のコンテンツを削除します。

sed '5,7d' sed-demo.txt

Linuxでファイルの特定の行を削除する方法

##連続しない行を削除します。たとえば、1 行目と 7 行目を削除します。 5 行目、9 行目、最後の行:

sed '1d;5d;9d;$d' sed-demo.txt

Linuxでファイルの特定の行を削除する方法

さらに、3 行目から 6 行目以外の行を削除するなど、論理 NOT! とともに使用することもできます。

sed '3,6!d' sed-demo.txt

Linuxでファイルの特定の行を削除する方法

3. 空白行の削除

sed は、ファイル内の空白行の削除もサポートしています。

sed '/^$/d' sed-demo.txt

Linuxでファイルの特定の行を削除する方法

ヒント: ここで 2 つのスラッシュ / / で囲まれた式は、テキスト マッチングの役割を果たします。正規表現の使用法を参照してください。以下は、全員の学習を深めるために一般的に使用されるいくつかの方法です。

4. 特定の文字を含む行を削除する

サンプル ファイルで System という単語を含む行を削除するとします。 /System/, これは、文字列 System が表示される場合に一致することを意味します。具体的なコマンドは次のとおりです:

sed '/System/d' sed-demo.txt

Linuxでファイルの特定の行を削除する方法

それだけでなく、論理条件を追加することもできますたとえば、次のコマンド:

sed '/System\|Linux/d' sed-demo.txt

Linuxでファイルの特定の行を削除する方法

記号

\| は論理 OR を表します。上記のコマンドは、System または Linux が含まれるすべての行を意味します。テキストは「削除する」です。

5. 特定の文字で始まる行を削除します

まず、デモンストレーションを改善するために、別のサンプル ファイル sed-demo-1.txt を作成します。内容は次のとおりです。

cat sed-demo-1.txt

Linuxでファイルの特定の行を削除する方法

上で述べたように、$ 記号は終わりとして理解できますが、始まりを表すことができる文字はありますか?答えは「はい」です。ここでは ^ 記号を使用して始まりを表すことができます。

したがって、特定の文字で始まる行を削除する場合、たとえば R で始まる行を削除する場合は、次のコマンドを使用できます。

sed '/^R/d' sed-demo-1.txt

1Linuxでファイルの特定の行を削除する方法

那么问题来了,比如我想删除以 R 或者 F 开头的行,那我是不是要执行两次命令呢?如果是有更多岂不是要执行多次命令?这里它有一个简单的写法,你只要把这些字符写在一对中括号 [] 里就可以了:

sed '/^[RF]/d' sed-demo-1.txt

1Linuxでファイルの特定の行を削除する方法

上面命令的作用是 删除以 R 或者 F 开头的行。

6. 删除特定字符结尾的行

同上面一个道理,删除以某一个字符结尾的行,比方说删除以 m 结尾的行,我们可以这样做:

sed '/m$/d' sed-demo.txt

1Linuxでファイルの特定の行を削除する方法

删除以 x 或 m 结尾的行可以这样写:

sed '/[xm]$/d' sed-demo.txt

1Linuxでファイルの特定の行を削除する方法

7. 删除以大写字母开头的行

这里问题又来了,我想要删除所有以大写字母开头的行呢?按照上面的做法是不是要将 A 到 Z 这 26 个字母都写进 [ ] 里呢?其实我们大可不必这样做,在 A 和 Z 中间加个 - 就可以了:

sed '/^[A-Z]/d' sed-demo-1.txt

1Linuxでファイルの特定の行を削除する方法

机智的你看到这里肯定会想到其他类似的用法的了,不妨看看下面是否有你想到的命令吧。

8. 删除包含字母字符的行

sed '/[A-Za-z]/d' sed-demo-1.txt

1Linuxでファイルの特定の行を削除する方法

9. 删除包含数字的行

sed '/[0-9]/d' sed-demo-1.txt

1Linuxでファイルの特定の行を削除する方法

另外,通过这个例子,我们可以加上 ^ 和 $ 更好地看到他们之间的区别:

sed '/^[0-9]/d' sed-demo-1.txt

1Linuxでファイルの特定の行を削除する方法

sed '/[0-9]$/d' sed-demo-1.txt

1Linuxでファイルの特定の行を削除する方法

相关推荐:《Linux视频教程

以上がLinuxでファイルの特定の行を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。