ベストアンサー /bin/awk '{print $5}'ってどう 2021/08/30 16:57 /bin/awk '{print $5}'ってどうゆう意味ですか? みんなの回答 (2) 専門家の回答 質問者が選んだベストアンサー ベストアンサー notnot ベストアンサー率47% (4900/10359) 2021/08/30 18:37 回答No.2 ざっくり言うと「5列目だけを表示する」です。 列とは何?はさておき。 質問者 お礼 2021/08/31 07:55 ありがとうございます^_^ 通報する ありがとう 0 広告を見て他の回答を表示する(1) その他の回答 (1) noname#252039 2021/08/30 17:49 回答No.1 https://atmarkit.itmedia.co.jp/ait/articles/1706/15/news021.html コレ、参考になりますよ! 通報する ありがとう 0 カテゴリ パソコン・スマートフォンパソコンその他(パソコン) 関連するQ&A awk '{print $1}' file をもっと簡単に書きたい awkで最も頻繁に使うのが、fileのN列目だけを抜き取ってくるという使い方なんですが ↓ awk '{print $N}' file Nとfileという2つの引数しか使わないのでこれを my_awk N file といった具合に間単に使える my_awk シェルを作りたいんですが、$のあたりがうまくかけません、どう直せばいいでしょうか?↓ #!/bin/csh awk '{print $$1}' $2 シェルスクリプトで/bin/awkって何ですか? シェルスクリプトで/bin/awkって何ですか? awk のプログラム最初の行 awk のプログラムでは、おまじないのように #! /bin/awk -f を最初の行に書けと教えてもらってそうしています。 ところで、この ! とか /bin/awk -f とかどういういみなんでしょうか? awk の使い方 sample.txt ファイルには "中村" "08/01/80" "03.1234.5678" "木村" "08/01/81" "06.1252.2536" のような情報があります。(フィールドの区別はTabです) そこの3番フィールドが電話番号ですので、awkで検索しようと思っています。 それで、 $ shell 06.1252.2536 #!/bin/sh NUM=$1 #引数をNUMに代入 awk -v ARGU="$NUM" ' { VAR=substr($3,2,(length($3)-2)) #「"」を取り除いた if ( ARGU == VAR ) {print} #電話番号と比較 }' /sample.txt のようにして、検索をかけようとしましたが、できません。 どこが間違っているのか教えてください。 awkの他の方法があるとか、違うもの(sed or grep)でできるのであれば、お願いします。 シェルスクリプトで、空白(スペース)を含む変数をawkに渡したいのです シェルスクリプトで、空白(スペース)を含む変数をawkに渡したいのですが、どうしたらいいでしょうか? 例えば、以下のようなtest.shというファイルを作ったとします。 --------------- #!/bin/sh AAA="x y" echo "" | awk '{print $AAA}' -------------- としたとき、$AAAが正常に出力できません。(なお、echo "" は、awkを走らせる為の単なるダミーです。) printの部分を ・awk '{print '$AAA'}' ・awk '{print "'$AAA'"}' などともしてみましたが、ダメでした。どのようにすればうまくいくでしょうか? /usr/bin/ と /bin/の違い gawk の説明のWEBページを見ると、スクリプトを作るときに、最初に書くこととして、 #! /usr/bin/awk -f と説明しているページと #! /bin/awk -f と説明しているページとがあります。 両方大丈夫みたいですが、なぜ、2つともOKなのでしょう?違いは? awkの使い方について教えてください。 awkとperlなどの初心者です。 使い方が分かっていないのですが、 例えば出力のフィールドセパレータを,に変更するには どうすればいいでしょうか? awk '{OFS=,;print}' fileなどとやってみますが、 うまくいきません。2つ以上のコマンドを実行するときの 文法がわかっていないような気がするのですが。 あとperlでよくみかけるperl -neのnは何でしょうか? man perlとやってみても-wと-eの意味しかのっていなくて なからないのですが。ご教授下さい。 awkによるあるプログラムその2 立て続けに申し訳ないですが、 次のプログラムを実行すると、 gawk: ./test.awk:19: fatal: function name `foo' previously defined というエラーになってしまいます。 なぜでしょうか? #!/usr/bin/gawk -f #test.awk: BEGIN{ a="OK"; b="OK"; c="OK"; print foo(1,2); print a,b,c; print bar("AWK is", "convenient"); print a,b,c; print "4!==" recursive(4); } function foo(a,b, c){ c=a+b; return c; } function foo(a,b, c){ c=a b; return c; } function recursive(a){ if(a<=1)return 1; else return a*recursive(a-1); } シェルでawkを使い行数を取り出すには? #!/bin/sh gyo=awk 'END{print NR}' sample.dat 変数gyoにsample.datの行数をいれたいのですが、 これではcommand not foundと出てしまいます。 次に awk 'END{'gyo'=NR}' sample.dat としてみたのですが今度はシンタックスエラーが出てしまいます。 どうすればsample.datの行数をシェルの変数に代入できるでしょうか? awkについて 度々すみません。awkについて先程教えて頂いたものですが、少し変更しようと思っているのですが上手くいきません。変更していることは、以下の○○○の内容を固定ではなくてコマンドラインから渡したいです。 ウェブで調べたところARGVというのを使うことはわかりました。そこで"○○○"からARGV[0]に変更してコマンド実行時に引数を与えたのですが、「○○○というファイルを開けません」というエラーになってしまいます。実行したのはawk -f awk data.csv ○○○です。なぜ引数をファイル名だと認識してしまうのでしょうか。初歩的で申し訳ありませんが教えて下さい。 BEGIN{ goukei = 0 count = 0 } { #フィールドの8番目の条件が一致する場合のみ9番目を合計 if($8=="○○○"){ goukei += $9 count++ } } END{ if(count!=0){ print "合計は", goukei print "平均は", goukei/count } else{ print "条件に一致するのない” } } awk の使い方 sample.txt ファイルには "中村" "08/01/80" "03.1234.5678" "木村" "08/01/81" "06.1252.2536" のような情報があります。 そこの3番フィールドが電話番号ですので、awkで検索しようと思っています。 それで、 awk -v ARGU="$NUM" ' { VAR=substr($3,2,(length($3)-2)) if ( ARGU == VAR ) {print} }' /sample.txt のようにして、検索をかけようとしましたが、できません。 どこが間違っているのか教えてください。 awkの他の方法があるとか、違うもの(sed or grep)でできるのであれば、お願いします。 AWKスクリプトについて AWKスクリプトで あるファイルの中の3単語目の最大文字数を表示させたくて以下のようなスクリプトを作成しました。 #!/bin/nawk -f BEGIN{ maxword = 0; } { if( length( $3 ) > $maxword ) maxword = length( $3 ); } END{ print $maxword; } 単純なスクリプトなのですが, テストしてみると空白の出力しかされません。 なにか間違っているのでしょうか? どなたかアドバイスをお願いします。 awkコマンド ダンプするディスクのリストを得るためのshスクリプト disks=‘df | awk '/^\/dev/ { print $1 }'‘ で、awkが一体何をやっているのか教えていただけないでしょうか。 awkについて awkについて 今とあるファイルの/var/tmp/test 中の検索についてawkを使用しています。 123 abc 123-m 333 aaa-xx 1qwoko などタブキーで区切られています。 cat /var/tmp/test grep 123 | awk '$=="123"{print $2}' とやった場合存在するので 結果がでるのですが、その結果がない場合"NG"など文字列を出したいのですがどうすればいいでしょうか? awkの文法 以下のawkの「'\'7b」の部分と「}'」の部分がmanを見てもどうしてもわかりません。 どなたか教えていただけないでしょうか? grep Cairns /etc/passwd | awk -F: '\'7b print $3 }' awk match関数 awkのmatch関数で、 awk -F":" 'match($2, "/hogehoge/") {print $0} ファイル名 は、動きます。 たとえば、検索条件に"/"が入ってるときは、 awk -F":" 'match($2, "#hoge/hoge#") {print $0} ファイル名 ってやりたいんですが、動きません。 こういうもんなのですか?? awk -F":" 'match($2, "/hogehoge/i") {print $0} ファイル名 も、気持ち的に動いてほしいですが、これも、動きません。 こういうもんなのですか?? tolower($2) を使えば、それですみますが・・・ 質問が、2つになってしまいました。すみません。 よろしくお願いいたします。 awkコマンドに引数を渡す方法 awkコマンドに対して引数を渡す方法が知りたいです。 例えば以下のようなリストファイルがあったとします。 --------------------------------------- % cat test.lst 454 100 37536 200 32432 300 34q2 400 --------------------------------------- そこで以下のシェルを実行すると --------------------------------------- #!/bin/sh for VAL in 100 200 300 do CNT=`cat test.lst | awk '$2 == $VAL {print $1}'` echo "$VAL : $CNT" done --------------------------------------- awkコマンド内の$VALが引数ではなく文字列として認識されてしまうため、 出力結果が 100 : 200 : 300 : となってしまいます。 100 : 454 200 : 37536 300 : 32432 という結果を出力したい場合(awk内の引数を有効にする場合)どうすればよいでしょうか? awkを使用しない方法もあるかと思いますが、今回はawkを使った方法を知りたいです。 宜しくお願い致します。 awk外で宣言した変数の参照 kshを使用して、以下のようなシェルを作成しています。 しかしawk内で$iと$iiが参照出来てない様子です。 どのようにすれば参照できますでしょうか。 ■シェルの中身 #/usr/bin/ksh for i in `cat /tmp/hoge |awk -F : '{ print $3 }' | sort | uniq -d` do if [ $i != "" ]; then for ii in `cat /tmp/hoge` do echo $ii |awk -F ":" '{ if ( $3 -eq $i ) print $ii }' done fi done ■エラー awk: 0602-562 フィールド $() が正しくありません。 入力の行番号は 1 です。 ソースの行番号は 1 です。 AWKスクリプトのエラーびついて AWKアスクリプトのエラーについて質問があります。 以下のようなAWKスクリプトでエラーがでます。 #!/bin/nawk -f BEGIN{ npl = 30; ppl = 200; pd = 110; nd = 46; m1 =0.074; } { 処理 } エラーメッセージ /bin/nawk: syntax error 7 行目 コンテキスト m1 >>> =0.074; <<< なんで,こんなところでエラーが出力されるのかよくわかりません。 どなたか教えていただけないでしょうか? awkについて UNIXのawkコマンドにて、レコードを抜き出したいのですが、その時抜き出した各レコード毎に改行 をいれたいのですが、下記のような定義で問題ないでしょうか? awk -f PGMファイル 元データファイル > 抜き出したデータファイル PGMファイル は下記です。 BEGIN{ORS=\"\\n\"} ←改行でいいんでしょうか? { if(substr($0, 5, 1) == \"1\"){ if(substr($0, 6, 2) == \"2\"){ print substr($0, 1,138) } } }
お礼
ありがとうございます^_^