【sed】シェルスクリプト総合@LINUX【awk】
もっとぶって!
953 :
login:Penguin:2006/08/01(火) 02:01:19 ID:aVWxa+ZH
/var/www/html/koko/top/
の koko だけ取り出しんですけど、方法ありますか?
今、オライリーの本見てるんですけど、まだまだ時間かかりそう。
ちゃんと勉強するので、今教えて下さい。もう眠いです(T.T)
echo /var/www/html/koko/top/ | awk -F/ '{ print $5 }'
>>954 ありがとうございました!
やっと寝れます。あー、よかった。明日からより一層精進致します。
レコードごとにセパレータが違う場合、
FS を変えてから再度レコードを読み込みたいが
いいコマンドが見つかりません。
(getline は次の行を読みにいく。)
gawk に拘りませんが何かいい(スマートな)方法がありますか?
957 :
login:Penguin:2006/08/01(火) 12:41:30 ID:aVWxa+ZH
上のやり方で、-Fセパレータで取り出す方法は、教えて頂いた後に勉強
して理解致しました。で、疑問なんですが
/var/www/html/koko/top/
を
/var/www/html/top/
と省くやり方とかもあるんでしょうか?
>>956 split
>>957 echo /var/www/html/koko/top/ | cut -d / -f -4,6-
>>958 なるほど。cutを使って出来るんですね。
今まで、あまり使ったことありませんでしたが、見直しました!
とても勉強になります。
とぷくすり
>958
さんきゅー、
助かりました。
今オライリーのsed & awk の「正規表現」のとこ読んでるんですけど
まるで呪文ですね。ここらは暗記するとこでしょうか?それとも、何
と無く覚えておいて、必要な時に開いて見るくらいでいいんでしょうか?
理解しようとして、ずっと読んでるけど、頭痛くなって来ました(T.T)
>>962 正規表現はテキストをシーケンシャルに読むだけでは、なかなか理解できるものではないよ。
とにかく自分で試行錯誤して、アハ体験(あぁなるほどそういう事か!という得心)を
積み重ねていく。
それを継続していくと、いつのまにか呪文だった式が意味を持った表現として
すーっと理解できるようになる日が来る。
オライリーだけでは心細かろう。
「正規表現最新リンク集」「sedは日暮れて」あたりでぐぐってみると、webでも結構優良かつ
柔かい解説に巡りあえるぞ。
正規表現は一文字がひとつのコマンドのプログラム言語です。
アルゴリズムをコーディングするという考え方で理解するべし。
正規表現を見くびる傾向があるように思えるのは、
制御文がないとプログラム言語じゃない、または低級だという
先入観があるからかね。
もともとコンパイラの基幹技術だし、UNIXが公開した技術のなかでも
ベル研の太っ腹ぶりが最も現れてるところだと思うけどな。
正規表現は甘くないし、真剣に取り組むべきものだと思うよ。
ちなみにRMSは、一押しの入門用プログラム言語に「HTML」を挙げている。
Lisperらしい答えだと思った。
最初の頃はまずCのコードで頭に浮かんでそれを正規表現にコーディングしてた。
Cは立派なプログラム言語でスクリプトは下級言語、正規表現に至ってはプログラム言語にあらずw
Cよりpythonの方がずっと高級だと思う今日このごろ。
969 :
login:Penguin:2006/08/02(水) 02:40:31 ID:7vm0Jg4L
>>968 結局のところ何が言いたいのかよく分からん.
書き込みを読む限り,術語としての「高級」とか「低級」という言葉を知らないように見える.
>>969 おはよう。
プクグラミングを知らない人の不思議な偏見を言ったまで。
正規表現になるともうプログラムに見えてない。
ちょっと笑えたからさ。
プクグラミングなんて俺は知らない。
^:先頭
$:末尾
[^]:否定
+:1文字以上の繰り返し
*:0文字以上の繰り返し
.:任意の1文字
?:最小マッチ
():グループ化
これで全部事足りてるなぁ・・・。
うむ、アルゴリズムと言うよりもパラメータだな。俺の印象だと。
なんか因数分解が出来る正規表現とかもあるらしいけどね。
>>973 俺もそれだけだな。
最初覚えたのがWindowsで秀丸使ってるときで、ヘルプにそれくらいしか載ってなかったから、それ以外はわからんw
975 :
login: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 * * * *
となってしまいます。なんで???
一番初めの#以外の文字を0に変換しなさい。
クーロンの「分」をすべて0分にしようとして、覚えたてのsed使ってみるか
と思ってやったのですが、期待に反しました。手で直せと言われればそれまで
ですが、ここはなんとしてでもsedでやりとげたいです。
sed 's/^[^#][^ ]*/0/g' file
>>976 ^[^#]
これであってると思うですけど、まちがってますか?
>>978 sed 's/^[^#][^ ]*/0/g' file
で出来たんですけど、なぜ出来るのか、わかんないです。
勉強足りないですね。
すいませんでした。ご迷惑お掛け致しました。
一番初めが#以外その後スペースが現れるまでの文字列を0に変換しなさい。
>>985 ありがとうございました。
不愉快にさせてしまって申しわけありませんでした。
もう答は出てるし間違ってはいないんだけど、sed 的には
sed '/^[^#]/s/^[^ ]*/0/'
とする方がふつーだと思う。
gnu拡張が読みやすい。sed 's/^[0-9*]\+/0/g'
次スレ無理だった。つーか考えてみたらこのスレの必要性もよく分からん
gいらんだろ。
993 :
login: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いらないんですか?
>>993 $ cat delme.txt
one
two
tree(木?)
$ column delme.txt | sed 's/\t\+/./g'
one.two.tree(木?)
>>994 ごめんなさい。
立てれないって見て、立てたら2重でした。
削除依頼だします。
よくある行き違いって奴よ
別に謝る必要はない
うむうむ
>>991 ム板とUNIX板にもシェルスクリプトスレはあるけど
合流しても犬厨は嫌われるからな。
>>993 paste -s -d ,
銀河鉄道
すいません。1000貰わせて頂きます。
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。