【sed】シェルスクリプト総合@LINUX【awk】

このエントリーをはてなブックマークに追加
952login:Penguin:2006/07/28(金) 18:57:10 ID:N/f7j//8
もっとぶって!
953login:Penguin:2006/08/01(火) 02:01:19 ID:aVWxa+ZH
/var/www/html/koko/top/

の koko だけ取り出しんですけど、方法ありますか?
今、オライリーの本見てるんですけど、まだまだ時間かかりそう。
ちゃんと勉強するので、今教えて下さい。もう眠いです(T.T)
954login:Penguin:2006/08/01(火) 02:08:15 ID:1kE7PaDW
echo /var/www/html/koko/top/ | awk -F/ '{ print $5 }'
955login:Penguin:2006/08/01(火) 02:20:46 ID:aVWxa+ZH
>>954
ありがとうございました!
やっと寝れます。あー、よかった。明日からより一層精進致します。
956login:Penguin:2006/08/01(火) 12:08:31 ID:0iZXhdG/
レコードごとにセパレータが違う場合、
FS を変えてから再度レコードを読み込みたいが
いいコマンドが見つかりません。
(getline は次の行を読みにいく。)
gawk に拘りませんが何かいい(スマートな)方法がありますか?
957login:Penguin:2006/08/01(火) 12:41:30 ID:aVWxa+ZH
上のやり方で、-Fセパレータで取り出す方法は、教えて頂いた後に勉強
して理解致しました。で、疑問なんですが

/var/www/html/koko/top/



/var/www/html/top/

と省くやり方とかもあるんでしょうか?
958login:Penguin:2006/08/01(火) 13:00:41 ID:IZJZX5Gr
>>956
split

>>957
echo /var/www/html/koko/top/ | cut -d / -f -4,6-
959login:Penguin:2006/08/01(火) 13:26:27 ID:aVWxa+ZH
>>958
なるほど。cutを使って出来るんですね。
今まで、あまり使ったことありませんでしたが、見直しました!
とても勉強になります。

960login:Penguin:2006/08/01(火) 13:43:04 ID:gIqGUd/k


とぷくすり
961login:Penguin:2006/08/01(火) 17:08:00 ID:0iZXhdG/
>958
さんきゅー、
助かりました。
962login:Penguin:2006/08/01(火) 20:50:52 ID:aVWxa+ZH
今オライリーのsed & awk の「正規表現」のとこ読んでるんですけど
まるで呪文ですね。ここらは暗記するとこでしょうか?それとも、何
と無く覚えておいて、必要な時に開いて見るくらいでいいんでしょうか?
理解しようとして、ずっと読んでるけど、頭痛くなって来ました(T.T)
963login:Penguin:2006/08/01(火) 22:25:36 ID:fhCgSNZn
>>962
正規表現はテキストをシーケンシャルに読むだけでは、なかなか理解できるものではないよ。
とにかく自分で試行錯誤して、アハ体験(あぁなるほどそういう事か!という得心)を
積み重ねていく。
それを継続していくと、いつのまにか呪文だった式が意味を持った表現として
すーっと理解できるようになる日が来る。

オライリーだけでは心細かろう。
「正規表現最新リンク集」「sedは日暮れて」あたりでぐぐってみると、webでも結構優良かつ
柔かい解説に巡りあえるぞ。
964login:Penguin:2006/08/01(火) 22:31:15 ID:jY3VooSu
正規表現は一文字がひとつのコマンドのプログラム言語です。
アルゴリズムをコーディングするという考え方で理解するべし。
965login:Penguin:2006/08/01(火) 23:55:32 ID:aVWxa+ZH
>>963-964
アドバイスありがとうございます。
がんばります。
966login:Penguin:2006/08/02(水) 00:14:59 ID:QCEuT81j
>>963
4パターンくらい四くらいしかないけどな。

>>964
ん?
967login:Penguin:2006/08/02(水) 00:48:06 ID:HPZATjx4
正規表現を見くびる傾向があるように思えるのは、
制御文がないとプログラム言語じゃない、または低級だという
先入観があるからかね。
もともとコンパイラの基幹技術だし、UNIXが公開した技術のなかでも
ベル研の太っ腹ぶりが最も現れてるところだと思うけどな。
正規表現は甘くないし、真剣に取り組むべきものだと思うよ。
ちなみにRMSは、一押しの入門用プログラム言語に「HTML」を挙げている。
Lisperらしい答えだと思った。
968login:Penguin:2006/08/02(水) 01:46:05 ID:CbQw8rtH
最初の頃はまずCのコードで頭に浮かんでそれを正規表現にコーディングしてた。
Cは立派なプログラム言語でスクリプトは下級言語、正規表現に至ってはプログラム言語にあらずw
Cよりpythonの方がずっと高級だと思う今日このごろ。
969login:Penguin:2006/08/02(水) 02:40:31 ID:7vm0Jg4L
>>968
結局のところ何が言いたいのかよく分からん.

書き込みを読む限り,術語としての「高級」とか「低級」という言葉を知らないように見える.
970login:Penguin:2006/08/02(水) 06:47:59 ID:CbQw8rtH
>>969
おはよう。
プクグラミングを知らない人の不思議な偏見を言ったまで。
正規表現になるともうプログラムに見えてない。
ちょっと笑えたからさ。
971login:Penguin:2006/08/02(水) 19:29:29 ID:fMi881gf
プクグラミングなんて俺は知らない。
972login:Penguin:2006/08/02(水) 20:50:10 ID:+xepiLvI
>>971
warota
973login:Penguin:2006/08/02(水) 22:20:36 ID:QCEuT81j
^:先頭
$:末尾
[^]:否定
+:1文字以上の繰り返し
*:0文字以上の繰り返し
.:任意の1文字
?:最小マッチ
():グループ化

これで全部事足りてるなぁ・・・。
うむ、アルゴリズムと言うよりもパラメータだな。俺の印象だと。
なんか因数分解が出来る正規表現とかもあるらしいけどね。
974login:Penguin:2006/08/02(水) 22:48:57 ID:vhhmIYXT
>>973
俺もそれだけだな。
最初覚えたのがWindowsで秀丸使ってるときで、ヘルプにそれくらいしか載ってなかったから、それ以外はわからんw
975login:Penguin:2006/08/03(木) 00:12:47 ID:NQ3T36sk
質問です。

# comment
0 6 * * *
1 6 * * *
10 0 * * *
15 * * * *
* * * * *

とあり、左全てを0にしようとして

sed 's/^[^#]/0/g' file

とやったんですが

# comment
0 6 * * *
0 6 * * *
00 0 * * *
05 * * * *
0 * * * *

となってしまいます。なんで???
976login:Penguin:2006/08/03(木) 00:14:17 ID:amcZYYLr
一番初めの#以外の文字を0に変換しなさい。
977login:Penguin:2006/08/03(木) 00:15:55 ID:NQ3T36sk
クーロンの「分」をすべて0分にしようとして、覚えたてのsed使ってみるか
と思ってやったのですが、期待に反しました。手で直せと言われればそれまで
ですが、ここはなんとしてでもsedでやりとげたいです。
978login:Penguin:2006/08/03(木) 00:17:16 ID:amcZYYLr
sed 's/^[^#][^ ]*/0/g' file
979login:Penguin:2006/08/03(木) 00:17:41 ID:NQ3T36sk
>>976

^[^#]

これであってると思うですけど、まちがってますか?
980login:Penguin:2006/08/03(木) 00:19:16 ID:amcZYYLr
981login:Penguin:2006/08/03(木) 00:19:22 ID:NQ3T36sk
>>978

[^ ]

これ何?スペース以外?
982login:Penguin:2006/08/03(木) 00:20:29 ID:amcZYYLr
>>981
うざい、氏ね
983login:Penguin:2006/08/03(木) 00:20:54 ID:NQ3T36sk
>>978

sed 's/^[^#][^ ]*/0/g' file

で出来たんですけど、なぜ出来るのか、わかんないです。
勉強足りないですね。
984login:Penguin:2006/08/03(木) 00:22:05 ID:NQ3T36sk
すいませんでした。ご迷惑お掛け致しました。
985login:Penguin:2006/08/03(木) 00:23:08 ID:amcZYYLr
一番初めが#以外その後スペースが現れるまでの文字列を0に変換しなさい。
986login:Penguin:2006/08/03(木) 00:25:40 ID:NQ3T36sk
>>985
ありがとうございました。
不愉快にさせてしまって申しわけありませんでした。
987login:Penguin:2006/08/03(木) 00:27:17 ID:amcZYYLr
>>986
がんばれよ
988login:Penguin:2006/08/03(木) 01:02:33 ID:nNr+zbw8
正規表現なんて簡単簡単。
http://www.kernelthread.com/hanoi/src/hanoimania/hanoi.sed
こんな短いの、>>973 見ればすぐ分かるよな
989login:Penguin:2006/08/03(木) 01:39:49 ID:c6mNtwcX
もう答は出てるし間違ってはいないんだけど、sed 的には

sed '/^[^#]/s/^[^ ]*/0/'

とする方がふつーだと思う。
990login:Penguin:2006/08/03(木) 02:30:05 ID:MnqDmNi5
gnu拡張が読みやすい。sed 's/^[0-9*]\+/0/g'
991login:Penguin:2006/08/03(木) 02:40:10 ID:MnqDmNi5
次スレ無理だった。つーか考えてみたらこのスレの必要性もよく分からん
992login:Penguin:2006/08/03(木) 06:50:03 ID:qMQoq8VB
gいらんだろ。
993login:Penguin:2006/08/03(木) 13:07:35 ID:NQ3T36sk
>>991
もう、992だけど、このスレ必要です!!

one
two
tree

とあり、改行を取り除いて「,」でつなぎたいんですが

sed 's/\n/,/g' file

だと動いてくれません。viだと、%s/\n/,/g で動くのに。
sedでの改行は\nで合ってますでしょうか?

>>992
gいらないんですか?
994login:Penguin:2006/08/03(木) 13:11:20 ID:5dVnjkpT
新スレ立てた

【sed】シェルスクリプト総合@LINUX Part2【awk】
http://pc8.2ch.net/test/read.cgi/linux/1154578200/
995login:Penguin:2006/08/03(木) 13:13:40 ID:xcuiOPQf
>>993
$ cat delme.txt
one
two
tree(木?)
$ column delme.txt | sed 's/\t\+/./g'
one.two.tree(木?)
996login:Penguin:2006/08/03(木) 13:14:41 ID:NQ3T36sk
>>994
ごめんなさい。
立てれないって見て、立てたら2重でした。
削除依頼だします。
997login:Penguin:2006/08/03(木) 13:18:54 ID:5dVnjkpT
よくある行き違いって奴よ
別に謝る必要はない
うむうむ
998login:Penguin:2006/08/03(木) 13:25:03 ID:KMEMIZza
>>991
ム板とUNIX板にもシェルスクリプトスレはあるけど
合流しても犬厨は嫌われるからな。

>>993
paste -s -d ,
999login:Penguin:2006/08/03(木) 13:28:06 ID:KiO2WW5X
銀河鉄道
1000login:Penguin:2006/08/03(木) 13:31:49 ID:NQ3T36sk
すいません。1000貰わせて頂きます。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。