No.2ベストアンサー
- 回答日時:
awk /a/{print} ⇒ a が含まれる行を出力
のようにシェルの特殊文字を含まない場合は、何も囲まなくて構いません。(正確には { } は文脈によっては特殊文字ですがこの場合は関係ない)
awk /NR<10/{print} ⇒ 9行目までを出力
としたいと思っても、< はシェルのリダイレクトの特殊文字なので、10というディレクトリにある{print}というファイルから入力するという意味になってしまいます。
< をシェルに解釈させず、awk に渡すために、エスケープしないといけません。
awk /NR\<10/{print}、awk '/NR<10/{print}'、awk "/NR<10/{print}"、
awk /NR"<"10/{print} など、どれでも同じ意味になるいろいろなエスケープ方法があります。特殊文字一文字ずつに \ を前置するか、" " ' ' で囲むか。
他の例としては、awk /a/{print\ \$1} ⇒ a を含む行の第1フィールドを出力
この場合は、空白と $ をエスケープしてます。
awk の場合、シェルの特殊文字である、" や $ や 空白 を使用するので、全体を ' ' で囲むのが普通です。
例: awk '$1=="X"{print $2}' ⇒ 第1フィールドがXなら第2フィールドを出力
パターンやアクションで ' を使いたければ ' ' の中には書けないので、外にエスケープして書きます。
awk '/a/{print "'\''"}' ⇒ a を含んだ行に対して ' 一文字を出力
ちょっとわかりにくいので、こういうケースでは、
awk -v APOST=\' '/a/{print APOST}'
と変数に代入して使うのがわかりやすいかも。
すみません。1週間も返事が遅れてしまいました。
とても丁寧に教えて頂いて分かりやすかったです。有難うございます。
"をつけたり'をつけたり、何もつけなかったりを色々試してみてみたいと思います。
No.1
- 回答日時:
awkと言うよりシェルに対しての操作です。
「"」の場合はシェル変数や環境変数の展開を行いたい場合に使用します。
逆に「'」は囲まれた文字列をそのまま扱いたい場合に使用します。
awkの変数とシェル(環境)変数に同一のものが使用されていた場合、
「"」で使用するとシェル変数の中身がawkに渡ることになります。
したがってawkで使用する場合「'」を使用することが無難です。
以下補足です。
$ echo '$PWD'
と
$ echo "$PWD"
を試してみてください。結果の違いが分かると思います。
すみません。1週間もお返事が遅れてしまいました。
なるほど、シェルに対しての操作ですか・・・。
echo "$PWD"の"$PWD"が展開されて/home/hogehogeになって、echoに渡されて画面に表示されるという感じなのですね。
「awkの変数とシェル(環境)変数に同一のものが使用されていた場合」というのも注意が必要なのですね。
有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) awkの BEGIN{RS=""} で空行を削除できるが、削除できる仕組みが分からない。 1 2023/05/02 14:14
- その他(プログラミング・Web制作) awkの正規表現での最左最短マッチング 3 2022/07/01 00:10
- その他(プログラミング・Web制作) awkの文字列比較はPOSIXロケールまたはCロケールにおいてバイナリ値の比較に使えるか gawkな 1 2023/04/22 09:21
- UNIX・Linux gawk 3 2022/08/18 14:07
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- その他(プログラミング・Web制作) テキストデータ変換(プログラミング、linux、python) 8 2023/08/08 16:39
- その他(プログラミング・Web制作) awkの$NR 2 2022/10/24 11:11
- その他(恋愛相談) 結婚してるけど他にいいなと思う人が身近にできて、でも何もアクション起こさずただの仲の良い知人・友人と 1 2022/08/13 20:23
- 数学 円周角の定理の証明では三つのパターンに分けて示す必要があるらしいのですが、一つのパターンでは不十分な 7 2023/06/28 08:58
- 教えて!goo このサイトで専門用語で質問して専門用語が分かる回答者を期待したが回答が得られない その例として例えば 4 2023/05/06 22:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
自作のウェブサイトを友人に見...
-
Ubuntu系とCentOS系の違いはな...
-
[Linux初心者]Ubuntu22.04.3LTS...
-
ubuntu(linux)のシャットダウン...
-
ubuntuで デイスク/deb/loopと...
-
ubuntuのシャットダウンが進ま...
-
bashでシングルクォート内の変...
-
Windowsのローカルディレクトリ...
-
AWSでSSH接続をしたいのですが...
-
Ubuntu on Xorgのログインについて
-
Linux のシェルスクリプトの強...
-
tarで纏める際に、複数場外した...
-
新しく買ったWin11のPCでLinux...
-
Linux全般なんですけど、Live u...
-
ワイルドカードの使い方
-
cronの@rebootでのdateコマンド...
-
Kali Linuxで起動できない - Mi...
-
ログにserver reached MaxReque...
-
Linuxについて質問です。 シェ...
-
linuxサーバーのキャッシュをク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ubuntu(linux)のシャットダウン...
-
bashでシングルクォート内の変...
-
ubuntuのシャットダウンが進ま...
-
Windowsのパソコンを使って仮想...
-
ubuntuで デイスク/deb/loopと...
-
AWSでSSH接続をしたいのですが...
-
Ubuntu on Xorgのログインについて
-
LinuxのノートパソコンでDVDコ...
-
linuxサーバーのキャッシュをク...
-
Postfixでドコモメールに送信す...
-
Windowsのローカルディレクトリ...
-
tarで纏める際に、複数場外した...
-
Linux のシェルスクリプトの強...
-
Linux Mint 日本語入力できなく...
-
ホストオンリーアダプタで接続...
-
ubuntuのサーバー(virtual box)...
-
VirtualBox ゲストOSにPC内蔵HD...
-
shellscript内のコマンドを、su...
-
Linux Ubuntu22.4の起動時エラ...
-
Ubuntu でinvalid filenameとな...
おすすめ情報