ファイル比較(diff)、置換(sed)

  • 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       # 删除最后一行

おすすめ

転載: blog.csdn.net/jjt_zaj/article/details/113104745