- diffは2つのファイルの違いをチェックします
- sedストリーミングテキストエディタ
- tr置換
差分
2つのファイルの違いを検出する、一般的な形式
diff -u file1 file2
[dps@ccod131 bak]$ diff -u test11.txt test12.txt
--- test11.txt 2018-11-27 14:12:56.189972213 +0800
+++ test12.txt 2018-11-27 14:12:36.294972247 +0800
@@ -1,3 +1,3 @@
2018.11.21
2018.11.22
-aaaaaa
+2018.11.23
分析:
- 2つのファイルを示すには、それぞれ-と+を使用します。
- @@行は、関連するファイルの行番号を示します。
- 前面にマークのないコンテンツは公開コンテンツを示します。
- 「-」が前に付いているコンテンツ行は、それがtest11ファイルの一意のコンテンツであり、ファイルtest12にはそのようなコンテンツがないことを示します。
- 前に「+」記号が付いたコンテンツ行は、それがtest12ファイルの一意のコンテンツであり、ファイルtest11にはそのようなコンテンツがないことを示します。
そして
処理中、現在処理中の行は「パターンスペース」と呼ばれる一時バッファに格納され、バッファ内の内容がsedコマンドで処理されます。処理が完了すると、バッファの内容が画面に送信されます。次に、次の行を処理し、ファイルの終わりまでこの方法を繰り返します。リダイレクトを使用して出力を保存しない限り、ファイルの内容は変更されません。Sedは主に、1つ以上のファイルを自動的に編集するため、ファイルに対する繰り返しの操作を簡素化するため、変換プログラムを作成するためなどに使用されます。
参照リンク:
https ://wangchujiang.com/linux-command/c/sed.html
テキストの置換
コマンドs
を使用して、指定された文字を置き換えます。
形式:sed 's/a/b/'
- /区切り文字であり、任意の文字に置き換えることができます。使いやすい
- aは置き換えられるコンテンツであり、正規表現を使用して一致させることができます
- b置き換えられたコンテンツ
- デフォルトでは、一致した最初に一致したデータのみが置き換えられます。それらすべてを置き換えるには、
g
コマンドsed 's/a/b/g'
;を使用します。 - 画面への出力のみを置き換え、ファイルを直接変更しないでください。ファイルを直接変更する場合は、
-i
パラメーターを使用します。sed -i 's/a/b/g' file
- N番目の一致から置換を開始する必要がある場合は、/ Ngを使用できます。
sed 's/a/b/2g'
- -nオプションをpコマンドとともに使用して、置き換えられた行のみを出力します。
- 複数の式を組み合わせる
sed '表达式; 表达式'
部分文字列一致トークン\ 1
- ()部分文字列を生成します。
- 正規表現部分を置き換えます
# 文件原内容
[dps@ccod131 bak]$ cat test11.txt
2018.11.21
2018.11.22
aaaaaa
# i 直接修改文件内容
# 使用 d 命令删除
# $ 表示最后一行
[dps@ccod131 bak]$ sed -i '$d' test11.txt
[dps@ccod131 bak]$ cat test11.txt
2018.11.21
2018.11.22
# 使用~作为分界符;
# 正则表达式的扩展元字符在这里需要转义;
# ()创建子字符串;
# 并且这里使用了子串标记的功能\n,将1,2,3顺序换为2,3,1,且分界符换为/
[dps@ccod131 bak]$ sed "s~\([0-9]\{4\}\)\.\([0-9]\{2\}\)\.\([0-9]\{2\}\)$~\2/\3/\1~g" test11.txt
11/21/2018
11/22/2018
削除操作
コマンドd
sed '/^$/d' file # 删除空行
sed '2d' file # 删除第2行
sed '2,$d' file # 删除第二行到末行
sed '/^test/'d file # 删除以test开头的行
sed '$d' file # 删除最后一行