Linux では、sed コマンドを使用して、指定したファイルの特定の行を削除できます。「sed 'M,Nd' ファイル名」ステートメントを実行すると、M 行から N 行までの連続した行の内容が削除されます。 「sed ' N1d;N2d;N3d;$d' ファイル名」ステートメントは、不連続な行 N1、N2、および N3 の内容を削除できます。特定の文字を含む行を削除するには、「sed '/特定の文字/d' ファイル名」ステートメントを実行します。実行 「sed '/^特定の文字/d' ファイル名」ステートメントは、特定の文字で始まる行を削除できます。
#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。
Linux では、sed コマンドを使用して、指定したファイルの特定の行を削除できます。
sed は Stream Editor の略称で、Linux の基本的なテキスト変換に使用され、ファイル操作において重要なコマンドであるため、テキストの削除操作にも使用できます。
以下は、ほとんどの使用シナリオをカバーする sed コマンドの使用例です。これらは、sed コマンドを浅いものから深いものまで学習するのに役立ち、ファイルの特定の行を簡単かつ効率的に削除できるようになります。
まず、デモ ファイル sed-demo.txt を準備し、ファイルの内容を確認します。
cat sed-demo.txt
次に、sed コマンドを使用して実験できます。 。
1. 特定の行を削除します
まず、最初の行と最後の行を削除するなど、特定の行を削除することから始めます。 . 実はN行目です。
N 行目を削除するコマンド形式:
sed 'Nd' file
1 行目を削除してみましょう:
sed '1d' sed-demo.txt
Veryシンプルですよね?ここでは説明は省きますが、どの行の内容を削除したい場合はコマンド内の1を置き換えるだけでOKです。
次に、最後の行を表すためにどのような数字が使用されているのかという疑問が生じます。ちょっとしたヒントです。ドル記号 $ を使用して終わりを表すことができるため、最後の行を削除するコマンドは次のように記述できます:
sed '$d' sed-demo.txt
2. 特定の行の削除
#sed コマンドは、連続した行または不連続な行を削除できます。
連続する行を削除します。たとえば、行 5 から 7 のコンテンツを削除します。
sed '5,7d' sed-demo.txt##連続しない行を削除します。たとえば、1 行目と 7 行目を削除します。 5 行目、9 行目、最後の行:
sed '1d;5d;9d;$d' sed-demo.txtさらに、3 行目から 6 行目以外の行を削除するなど、論理 NOT! とともに使用することもできます。
sed '3,6!d' sed-demo.txt
3. 空白行の削除
sed は、ファイル内の空白行の削除もサポートしています。
sed '/^$/d' sed-demo.txtヒント: ここで 2 つのスラッシュ / / で囲まれた式は、テキスト マッチングの役割を果たします。正規表現の使用法を参照してください。以下は、全員の学習を深めるために一般的に使用されるいくつかの方法です。
4. 特定の文字を含む行を削除する
サンプル ファイルで System という単語を含む行を削除するとします。 /System/, これは、文字列 System が表示される場合に一致することを意味します。具体的なコマンドは次のとおりです:sed '/System/d' sed-demo.txtそれだけでなく、論理条件を追加することもできますたとえば、次のコマンド:
sed '/System\|Linux/d' sed-demo.txt記号
\| は論理 OR を表します。上記のコマンドは、System または Linux が含まれるすべての行を意味します。テキストは「削除する」です。
5. 特定の文字で始まる行を削除します
まず、デモンストレーションを改善するために、別のサンプル ファイル sed-demo-1.txt を作成します。内容は次のとおりです。cat sed-demo-1.txt上で述べたように、$ 記号は終わりとして理解できますが、始まりを表すことができる文字はありますか?答えは「はい」です。ここでは ^ 記号を使用して始まりを表すことができます。 したがって、特定の文字で始まる行を削除する場合、たとえば R で始まる行を削除する場合は、次のコマンドを使用できます。
sed '/^R/d' sed-demo-1.txt
那么问题来了,比如我想删除以 R 或者 F 开头的行,那我是不是要执行两次命令呢?如果是有更多岂不是要执行多次命令?这里它有一个简单的写法,你只要把这些字符写在一对中括号 [] 里就可以了:
sed '/^[RF]/d' sed-demo-1.txt
上面命令的作用是 删除以 R 或者 F 开头的行。
6. 删除特定字符结尾的行
同上面一个道理,删除以某一个字符结尾的行,比方说删除以 m 结尾的行,我们可以这样做:
sed '/m$/d' sed-demo.txt
删除以 x 或 m 结尾的行可以这样写:
sed '/[xm]$/d' sed-demo.txt
7. 删除以大写字母开头的行
这里问题又来了,我想要删除所有以大写字母开头的行呢?按照上面的做法是不是要将 A 到 Z 这 26 个字母都写进 [ ] 里呢?其实我们大可不必这样做,在 A 和 Z 中间加个 - 就可以了:
sed '/^[A-Z]/d' sed-demo-1.txt
机智的你看到这里肯定会想到其他类似的用法的了,不妨看看下面是否有你想到的命令吧。
8. 删除包含字母字符的行
sed '/[A-Za-z]/d' sed-demo-1.txt
9. 删除包含数字的行
sed '/[0-9]/d' sed-demo-1.txt
另外,通过这个例子,我们可以加上 ^ 和 $ 更好地看到他们之间的区别:
sed '/^[0-9]/d' sed-demo-1.txt
sed '/[0-9]$/d' sed-demo-1.txt
相关推荐:《Linux视频教程》
以上がLinuxでファイルの特定の行を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。