sedシリーズの記事
- 一般的な Linux コマンド (9): sed コマンド (テキストの編集/置換/削除)
- linux sed コマンドは 1 行/複数行を削除します_sed は最初の行を削除します/linux はファイルの特定の行を削除します
- Linux sed バッチ変更およびファイル内の内容/sed 特殊文字の置換
記事ディレクトリ
この記事では、txt ファイル内の特定の行を削除する方法を主に説明します。sed コマンドの詳細については、「 Linux 共通コマンド (9):」を参照してください。 sed コマンド (編集/置換/削除) テキスト)》
1.sedの削除
編集コマンド | 意味 |
---|---|
1日 | 1行目の内容を削除 |
1,5日 | 1行目から5行目までの内容を削除 |
2,+5d | 2行目以降の5行の内容を削除 |
/パターン1/d | 各行の pattern1 に一致する行の内容を削除します |
/パターン1/、/パターン2/d | すべての行がパターン 2 に一致するまで、パターン 1 に一致する行を削除します。 |
/パターン1/,10d | pattern1 から 10 行目までに一致するすべての行を削除します |
10,/パターン1/d | 10行目からpattern1が一致するまでをすべて削除します。 |
1.1. sed は特定の行の内容を削除/最後の行を削除します
sed -i '1d' filename 删除文件第一行
sed -i '2d' filename 删除第二行
sed -i 'nd' filename 删除第n行/n需要是实际数字
sed -i '$d' filename 删除最后一行
実行結果:
指定された行が存在しない場合、その行は削除されません
1.2. sed は複数の行を削除します
sed -i '1,3d' filename 删除1-3行
sed -i '3,$d' filename 删除第3行到最后一行
実行効果:
1.3. すべての空行を削除する
# 删除所有空白行
sed -i '/^$/d' filename
1.4. 一致する行を削除する
sed -i '/某字符串/d' filename
コマンドの説明:
- /特定の文字列/ は、 // 中間の文字列を持つ行と一致します。行の先頭と一致するには、次のように ^ を追加します。
/^+/ は、次のように一致します。行頭の文字列を「+」行として表示
[root@centos test]# cat aa.txt
| 1 | tom | 男 |
| 2 | jack| 女 |
| 3 | cary| 男 |
| 4 | cody| 女 |
[root@centos test]# sed '/男/d' aa.txt -- 删除有男的行
| 2 | jack| 女 |
| 4 | cody| 女 |
[root@centos test]#
1.5. a で始まる行を削除する
删除以a开头的行
sed -i '/^a.*/d' tmp.txt
1.6. 逆削除
# 删除不包含green的行
sed -i '/green/!d' test.txt
1.7. スペースの削除
删除行首空格 sed 's/^[ \t]*//g'
删除行末空格 sed 's/[ \t]*$//g'
删除所有的空格 sed 's/[[:space:]]//g'
其中,sed 's/^[ ]*//g' 表示使用空字符匹配行首为空格的字符串;
依次拆解释义:
字符 's' 表示替换;
字符 '/' 表示作为分隔符;
字符 '^' 表示开头;
字符 '$' 表示结尾;
字符 '[ ]' 表示匹配指定字符范围内的任意单个字符,[ ]包含一个空格;
字符 '*' 作为通配符,匹配0个或任意多个; 字符 'g’ 表示全部匹配;
2. 拡張
2.1、-iコマンド
-i:直接修改文档读取的内容,不在屏幕上输出
sed は、現在処理中の行をパターンスペースまたは一時バッファーと呼ばれる一時バッファーに保存します。デフォルトでは、sed はファイル内の値を直接変更しませんが、-i を追加するとファイルの内容が直接変更されます。
この記事を整理しているときに、学ぶ価値のある他の記事をいくつか見つけました: https://blog.csdn.net/bandaoyu/article/details/120047612