現在Linuxの入門書を読んでいます。
その書籍のコマンドに少し触れているページで、
「高度なテキスト処理を行う」コマンドとしてawkとsedが紹介されています。
(1)このawkとsedの違いについてですが、以下のような考えでよろしいでしょうか?
「概念、シンタックス、コードの書き方などに違いはあるが、
実現できるテキスト処理に大差はない」
或いは、共にテキスト処理を行うコマンドであるが、
ターゲットとしている、或いは得意としている処理内容に違いがあるのでしょうか?
awkとsedの両刀使いの方は、どのような基準で使い分けているのでしょうか?
(2)「高度なテキスト処理を行う」ツールとして、何か1つ習得したいと思っています。
Webの情報を見ていると、awk/sedの利用者は昔からのUNIX/Linuxユーザーが多く、
最近のユーザーはスクリプト言語(perl, ruby, python, ...)を使っているような印象を
受けました。
今から学ぶ場合、スクリプト言語を学ぶ方が活用シーン(Webアプリ開発など)も広がり、
おすすめでしょうか?
ご意見をお聞かせください。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
(1) sed で出来ることは全部 awk で出来ますが、逆は出来ないことも多い。
sed で書くと簡単にできるのに、awk/Perl/Ruby等では長くなることもある。
sed にもホールドスペースというものがあって、単純な先頭行からの処理で無いことも出来ますが、考えるのが面倒なので、sed を使うのは単純なシーケンシャル処理だけの場合だけですね。
・単純な文字列置換
・n行目からn行目までを削除とか、取り出しとか
・特定の文字が出てくるまでを削除とか、取り出しとか
(2) テキスト処理で1つということだと、Perl か Ruby か二択でしょう。さらに、現時点では、これから学ぶ人がRubyでなくPerlを選ぶ理由は無いと思います。
あまり複雑な処理をしないのであれば、awkでも用足ります。言語機能が小さいので学びやすい。
(awkでは複雑な処理が出来ないと言うことでは無いです。テキスト処理ならほぼ何でも出来ますが、複雑な処理の場合は、Ruby等の方が言語機能が豊富なので書きやすいケースが多いということ)
私の疑問の全てに明確に答えていただきまして、ありがとうございます。
おかげさまで、awkとsedの違い、awk/sedの使い所についてイメージすることができました。
また、テキスト処理ツールについては、awk/sedは代表的な使い方を知り、Rubyは少し本格的に勉強していこうかと思いました。
No.2
- 回答日時:
>「概念、シンタックス、コードの書き方などに違いはあるが、実現できるテキスト処理に大差はない」
かなり違うと思いますよ。
sedは、viで先頭行から順にコマンドだけで処理するようなものですし。
>awkとsedの両刀使いの方は、どのような基準で使い分けているのでしょうか?
perlやrubyも含めて、やりたい事を簡単にできるものを使ってます。
>今から学ぶ場合、スクリプト言語を学ぶ方が活用シーン(Webアプリ開発など)も広がり、おすすめでしょうか?
perl,ruby,pythonの中からお好みでいいのではないでしょうか。
1つしっかりと習得すれば他のスクリプト言語も割とすんなり使えるようになると思いますよ。
ご回答ありがとうございます。
>1つしっかりと習得すれば他のスクリプト言語も割とすんなり使えるようになると思いますよ。
こういったアドバイスをいただけて、とてもうれしいです。
Rubyに取り組んでみようかと思います。
No.1
- 回答日時:
「awk と sed の両刀使い」ではありません (awk はあきらめて Perl に走ったので) が (1) だけ:
基本的に sed は「1行読み込みなんかしてから 1行出力」なので, このパターンに乗りそうなら sed.
ご回答ありがとうございます。
sedのsはStream、またsedだけでは不十分なケースもあるので、awkやperlなどの他のツールも習得する必要があるということですね。
>awk はあきらめて Perl に走ったので
何故 awkをあきらめたのかがちょっと気になりました :)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- 国家公務員・地方公務員 公務員試験の数的処理で苦戦しています。 1 2023/01/30 08:56
- その他(プログラミング・Web制作) awkの文字列比較はPOSIXロケールまたはCロケールにおいてバイナリ値の比較に使えるか gawkな 1 2023/04/22 09:21
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- UNIX・Linux Ubuntu22.04、nanoエディタの使い方について 2 2022/10/24 19:50
- 公認会計士・税理士 地代家賃と前払費用の決算整理仕訳 1 2023/02/25 08:14
- 大学受験 資格試験などの勉強で過去問題集の解説を理解する時、分からない用語を調べてどうするのが良いですか? 問 3 2023/06/18 17:18
- UNIX・Linux sedでの正規化 2 2022/05/10 11:39
- その他(プログラミング・Web制作) プログラミング 処理速度 1 2022/11/25 11:05
- その他(パソコン・スマホ・電化製品) LINUXPCに詳しい人に気楽に答えてほしい質問です。 2 2022/10/25 08:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
grepで全角文字の行を抽出
-
grepで検索文字列が完全一致し...
-
Linux環境 grepで改行コード(CR...
-
テキストファイルの間引き削除...
-
TOPコマンドで表示するCPU使用...
-
Dirコマンドでフォルダ内ファイ...
-
net use /d の強制実行
-
スリープモードへの移行を一時...
-
テキストファイルから最終行の抽出
-
batである文字列内に特定の文字...
-
ファイル名についている「-」と...
-
空きIPアドレスを探す方法
-
[バッチファイル]レジストリ値...
-
pingは正常なのにtracerouteで...
-
スクリプトのエラー「unexpecte...
-
ROBOCOPY cmdで正常に処理され...
-
SONYの音楽ソフト「x-アプリ」...
-
ラズパイで『’test.service’をs...
-
e4defragコマンドでデフラグ
-
アクセスのボタンから指定のワ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Linux環境 grepで改行コード(CR...
-
grepで検索文字列が完全一致し...
-
grepで日付指定してlogを取り出...
-
grepで全角文字の行を抽出
-
sed で \\ を含む文字列に置換
-
フィールドでgrepみたいなこと
-
grepでの抽出箇所のみ置換して...
-
zshの文字列置換機能
-
テキストファイルの間引き削除...
-
【シェルスクリプト】awkの結果...
-
awkを用いて、特定の文字を含む...
-
特定文字列間の文字列の抽出の...
-
LINUXで半角の英数字以外の文字...
-
bashでブランク(空白)を検索文...
-
awkのフィールド数制限について...
-
awkとsedはセットで覚えたほう...
-
grepで変数が使えない
-
ファイルをある文字列で分割し...
-
sedコマンドで範囲指定しての部...
-
特定の文字列を含む行だけ削除...
おすすめ情報