[Linuxのシェルは]のgrep、sedは、導入AWK

今日では、Linuxは、Windowsよりも強力な場所であることを正直私の感触であることを、文書をフォーマットされて何かについて話をします。

Linuxは、多くの文書には、多くの輸出受注は、高度に書式設定されています。適切なコンテンツを理解した後、以下のコマンドをいくつかご紹介しますので、我々は、我々が抽出したいものを言って、いくつかのコマンドを渡すことができるようになります:

コマンド 効果
グレップ ここで、行に対応するクエリ文字列
標準出力ストリームをフォーマット
AWK 処理場

A. grepコマンド

grepのコマンドは、対応する文字列のコンテンツを見つけるために使用されることはありません正規表現のパイプを使用することができます任意のコマンドパラメータを追加する必要

grep pattern

最も一般的に使用されるパラメータ-vの一つは、我々は、このパラメータを使用することができます抗選挙を

grep -v pattern

(グレップのベストプラクティスを使用して削除することですすべてが、空白行を、あなたはそれを自分で試すことができます)

あなたが文脈を見たい場合は、-A、-B、-Cパラメータを指定することができます。

ここで、-A +は、現在の行の前にデジタル数行、-B反対を表示するために使用されます。-Cは、数行の前後数行の内容を表示するために使用されます。

grep -A/B/C num pattern

最後に、関連して重要な点は、彼は2つのスタイルを持っていることであるgrepするために、一つは基本的な正規表現を使用して、BREのスタイルであり、他方は、拡張正規表現を使用してEREのスタイル、です。両地域追加EREスタイル| {}その他の特殊記号を意味します。あなたは拡張正規表現を使用する場合は、使用することができます。

# 虽然有了ERE,我更加推荐直接使用egrep
egrep
grep -E

 

二つ。sedコマンド

sedコマンドは、コマンドパイプラインで、彼の役割は、治療の書式設定、標準出力にすることです。彼がすることができ、新しい標準出力のために行うの挿入、削除、置き換え、およびその他の操作。

(1)。ニューライン

-i、-a:ニューラインは、2つのパラメータがあります。-iは、対応する行、対応する行を挿入した後-aコンテンツの前に挿入されます。

# 注意到sed的用法和grep完全不同
# 下面以0作为占位符,展示了sed插入行的做法
sed "0a content"
sed "0i content"

(2)削除行

# 下面展示两种模式
# 删除指定的一行(以数字0作为行号的占位符)
sed "0d content"
# 删除指定区间的所有行(以数字1和2作为行号的占位符)
sed "1,2d content"

あるいは(3)OK

航空行の削除とまったく同じ方法が、機能を交換することはD、Cから変更されています。

sed "0c content"
sed "1,2c content"

(4)交換部品

行うためにここに置き換え、ラインおよび交換の位相の違いに注意してくださいすることは、vimの内部の仕事を置き換える機能もvimの内部秒です。

sed "s/要被替换的内容/替换的内容/g"

例えば、私が先頭に#を持つすべてのコメント行を削除したい、私のアプローチは次のとおりです。

# 这里用到了一个小技巧,讲被替换的内容用什么都没有的东西代替,起到了删除内容的作用
sed "s/^#.*$//g"

 

三。awkコマンド

awkのアクションは、その概念の簡単な紹介に続いて、取引を行うために、出力に各フィールドの内容は次のとおりです。

(1)形状

awk '条件类型{操作1} 条件类型{操作2}...'

注AWKと、その中に一般的に使用さsedの-される「使用」は、その後の操作をラップ

違いは「」でAWKであり、異なるタイプおよびサブ操作の条件、様々な含めることができ、{}副作業とラップ

(2)組み込み変数

awkはawkが最も重要な理由のフィールドに対処するために使用することができる理由である組み込み変数、です。

各フィールドには、変数を表すために使用されます。

  1. $ 0:これは特殊変数である行全体を代表してデータを参照します
  2. $ 1、$ 2、...:これらの変数は、最初のフィールドに2番目のフィールドの内容を参照するために使用されています。

次のようないくつかの特別な変数がありますが、

  1. NF:各行のフィールドの総数を有します。
  2. NR:AWK現在、我々は、データの最初の数行を扱っています。
  3. FS:現在の区切り文字は、デフォルトではスペースバーです。

これらは、組み込み変数で使用できる条件タイプするだけでなく、中に使用できる操作の。

(3)条件タイプ

ブールタイプに言及するのに必要な条件といえば、あなたはawkは本当にC ++と一貫性のブール演算子のセットで、言うことはありません。ここではリストを行います。

awkのいくつかのキーワード条件のタイプにも使用することができ、があり、このようなBEGINとENDとしては、これら二つの治療および治療の最後の行の最初の行を表します

(4)動作

内蔵のawkの操作。あなたは男でドキュメントを表示することができます。基本的に文言のシェルスクリプトに基づいて書き込みます。

あなたは直接、{}内のロジックを書いても適用できない条件タイプのスクリプトを次のことができます。

# 这里直接用了命令,由此可以看出和写shell还是差不太多的
# printf还是和C++差不多,需要自己补上换行号
awk '{if (NR==1) printf("Hello World\n")}'

(5)は、組み込み関数

個人的には、最も有名なの印刷機能で構築された多くの機能をawkは、それは組み込み関数の本質awkはあると思うが、彼は標準出力ストリームに内容を印刷することができます。

# 这里print的使用方式又像python一样
# 自动换行,可以任意拼接你想输出的东西
# 注意引号之间的匹配问题
awk '{print %1 "==" %2}'

文書自体にアクセスすることができ、このような分割SUBSTRなどの文字列処理関数は、ありawkは。

この質問を考えてみます。

ここでは、2つのアイデアは、1つのインデックスとインデックスQiuziのSUBSTR文字列の使用を求めている、以下のとおりです。

awk '{print substr($1, index($1, "/") + 1) "==" $2}'

 もう一つは、分割後に得られる分割アレイの使用され、その後、対応する要素を取り出します。

awk '{split($1, str_arr, "/")}{print str_arr[2] "==" $2}'

 

公開された137元の記事 ウォン称賛19 ビュー10000 +

おすすめ

転載: blog.csdn.net/qq_43338695/article/details/103845369