sed と awk の主な違いは、sed は検索やフィルタリング、テキスト処理のために文字のストリームを扱うコマンドユーティリティであり、一方 awk は if/else, while, do/while などの高度なプログラミング構造を持つ sed よりも強力で堅牢であるということです。
オペレーティングシステムは、ユーザーとハードウェアデバイスの間のインターフェイスとして機能します。
コンピュータはオペレーティングシステムなしではどんなタスクも実行できません。
多くのオペレーティングシステムがありますが、UNIXはそのうちの1つです。
UNIXは、マルチユーザー環境をサポートする安定したオペレーティングシステムです。
Linuxは、UNIXをベースにした人気のあるオペレーティングシステムです。
UNIXもLinuxも強力なコマンドライン・インターフェイス(CLI)を備えている。
ユーザーは、CLIにコマンドを入力して、さまざまなタスクを実行することができます。
多くのコマンドがありますが、sedとawkはそのうちの2つです。
これらのコマンドは、フィルタリングやテキスト変換に役立ちます。
sed とは
sedは、テキストファイルを修正したり、フィルタリングしたりすることができるコマンドです。
sed ‘1,3 d’ test1.txt
上記のコマンドは、3行目以降の行を表示します。
test1.txtの1,2,3行目は表示されない。
sed ‘ s /abc / cab/’ test1.txt
上記のコマンドは、test1.txtファイル内のabcの代わりにcabを代入します。
sed ‘s/one/1/’ test1.txt
上記のコマンドは、test1.txt ファイル中の one の代わりに 1 を代入する。
sed ‘1,2 !d’ test1.txt
これは、1行目と2行目だけを表示します。
これらはsedのいくつかの例です。
全体として、sedはユーザーがフィルタリングと検索を実行することができます。
awk とは
awk コマンドは、ファイル内のデータを検索し、コンソールにデータを表示することができます。
ファイルに複数の列がある場合、特定の列のデータを検索することも可能です。
さらに、検索、条件実行、更新、フィルタリングなどの作業を支援します。
awk ‘{ print }’ file1.txt
上記のコマンドは file1.txt にあるすべての内容を表示します。
file1.txt ファイルが複数の列を含んでいると仮定します。
awk ‘{print $1}’ file1.txt
このコマンドは file1.txt の最初の列を表示します。
デフォルトでは、awk コマンドは空白をセパレータと見なします。
awk ‘{print $1 ” $3}’ file1.txt
上のコマンドは file1.txt の 1 列目と 3 列目を空白で区切って表示します。
awk ‘{print $1. $3}’ file1.txt
上のコマンドは 1 列目と 3 列目を連結したものを表示します。
awk ‘/example/ {print}’ file1.txt
上のコマンドは file1.txt ファイル中の example という単語を含むすべての行を出力します。
awk ‘/ [0-9] / {print}’ file1.txt
上記のコマンドは file1.txt ファイル中の 0 から 9 までの数字を含む行をすべて表示します。
awk ‘/ ^ [0-9] / {print}’ file1.txt
これは file1.txt の中で数字から始まる行を表示します。
awk ‘/ [0-9] $ / {print}’ file1.txt
これは file1.txt のうち、数字で終わる行を表示します。
また、以下のように条件分岐を確認することも可能です。
awk ‘{ if ($1 ~ /123/ ) print}’ file1.txt
これは、もし内容が123で始まっていれば、その行を表示します。
awk ‘{ if ($2 ~ /[0-9] / ) print}’ file1.txt
これは 2 列目の数字で始まる行を出力します。
以上が awk のいくつかの例です。
全体として、awk はテキストファイルを処理したり分析したりするための強力なコマンドです。
sed と awk の違い
定義
sed は、シンプルでコンパクトなプログラミング言語を使って、テキストの解析と変換を行うコマンドラインユーティリティです。
awk はテキスト処理のために設計されたコマンドラインユーティリティで、ステートメントの形式で効果的なプログラムを書くことができます。
機能性
sed と awk はどちらもテキスト変換のようなタスクのために文字のストリームを処理することができます。
awk は sed よりも強力で堅牢です。
これはプログラミング言語に似ています。
複雑さ
sed は単純で限定的ですが、awk はより複雑で多機能です。
結論
sed と awk の違いは、sed は検索やフィルタリング、テキスト処理のための文字列を扱うコマンドユーティリティであり、一方 awk は if/else, while, do/while などの高度なプログラミング構造を持つ sed よりも強力で堅牢なものであるということです。