sed

0001名無しさん@お腹いっぱい。
垢版 |
NGNG
sedスレッド
0215名無しさん@お腹いっぱい。
垢版 |
2007/10/07(日) 16:15:05
仮ファイルを使わずに
入力ファイル自身を書き換えることは出来ますか?
0217名無しさん@お腹いっぱい。
垢版 |
2007/10/11(木) 01:21:12
//exec($command,$arg);
とコメントアウトされた行をアンコメントしたいんだけど
sed 's/\/\/(exec\(\$command,\$arg\);)/\\1/' -i hoge.php
とかやっても思ったとおりに置換されない

(とか$とか/とかをうまくエスケープできてないだけなのか
どうなのかがよくわかんないんだけど、どこが間違ってる?
0219名無しさん@お腹いっぱい。
垢版 |
2007/11/11(日) 11:05:40
教えて下さい。

12345kkk6789
23456kkk4321
32456kkk9876
のようなテキストファイルが複数あり、
各行のkkk以降(kkkも含めて)を削除したいです。
1日考えてダメだったので、だれかお助け願います。


0221名無しさん@お腹いっぱい。
垢版 |
2007/11/11(日) 13:48:54
ありがとうございます。
0222名無しさん@お腹いっぱい。
垢版 |
2007/12/19(水) 03:19:13
sed -e '500,$d' の500の部分を変数にすることって出来ますか?

例えば、sed -e '$no,$d' みたいな感じで実行するとエラーになって困ってます。
0224222
垢版 |
2007/12/19(水) 03:55:03
>>223
どうもです。
sed -e "$no,$d"という風に変更してみましたがダメでした…

そもそも変数を指定することが出来ないというオチなのでしょうか?
0225名無しさん@お腹いっぱい。
垢版 |
2007/12/19(水) 04:23:23
>>224
あ、>>222 をちゃんと見てなかった。
$d は変数じゃなくて行末とデリートか。
なら、後ろの $ はエスケープが要るな。

sed -e "$no,\$d"

> そもそも変数を指定することが出来ないというオチなのでしょうか?
sed 自身が変数を解釈しているわけではない。
この場合は sed に引数を渡すシェルが処理をしている。

bash を例にとって説明すると >>222 の形式では
シングルクォートの中身は展開されずに
そのままの文字列が sed に渡される。

ダブルクォートにすると中身を展開するので
$no と $d を変数と解釈して設定された値に
入れ替わったものが sed に渡される。

この辺の挙動をちゃんと知りたいのならおまいさんが
使っているシェルの man を読め。
0226222
垢版 |
2007/12/19(水) 04:41:38
>>225
エスケープしたら一発で成功しました!

225さんの説明を読んで、また一つ理解が深まりました。
どうもありがとうございました!
0228名無しさん@お腹いっぱい。
垢版 |
2007/12/19(水) 13:56:00
sedの置換について質問 (GNU sed 4.x)
タブ(\t)は置換できるのですが改行(\n)が置換できません。
例えば # cat a.txt
aaa
bbb
aaa(タブ)bbb

3行目の(タブ)区切りは置換できるけど1行目と2行目にマッチした文字を置換できません。
どうやったらできますか?
0230228
垢版 |
2007/12/19(水) 18:53:01
a.txtの内容
----------
aaa
bbb
aaa bbb
----------

このa.txtを
----------
eee
fff
aaa bbb
----------
↑のように置換したい。

sed -i 's/aaa\nbbb/eee\nfff/' a.txt
これで出来ると思ったのですが出来なかったので。
どうやったらできますか?
0233228
垢版 |
2007/12/19(水) 19:47:13
訂正

a.txtの内容
----------
aaa
bbb
ccc
bbb
----------

このa.txtを
----------
aaa
bbb
ccc
ddd
----------
↑のように置換したい。
この文字は何行目にあるか不明だとして
一番下のbbbをdddに置換することはできますか?
0236228
垢版 |
2007/12/19(水) 20:21:37
>>234
sedじゃなくてもいいですけど、置換できますか?

>>235
エラーがでました。
extra characters at the end of q command
0237名無しさん@お腹いっぱい。
垢版 |
2007/12/19(水) 21:07:06
>>236
俺のところではエラーにならないけどな。
わかりやすいように改行を入れるとこんな感じ


sed -n '
${
p
q
}
:s
N
s/ccc\nbbb/ccc\nddd/
P
D
b s'
0239228
垢版 |
2007/12/19(水) 21:26:39
1行で出来ませんか?
0240228
垢版 |
2007/12/19(水) 21:30:49
>>238
わかりました。ありがとう。
0250名無しさん@お腹いっぱい。
垢版 |
2008/01/31(木) 15:44:59
ある単語(例:foo)をhoge-"
と置換したいんですが、

sed -e "s/foo/hoge-"/g"

だと当たり前だけどエラーが出ます・・・。
ダブルクォートとかって、どうやって指定したらいいんでしょう?
0252名無しさん@お腹いっぱい。
垢版 |
2008/01/31(木) 16:18:41
>>251
おお!ありがとう!!できましたヾ(゚∀゚)ノ
しかし>を認識しなくなってリダイレクトが使えなくなった・・・。
Winに組み込んだSedだからなのかなぁ・・・。
0254 ◆b/iUrOax9k
垢版 |
2008/04/13(日) 23:43:03
お邪魔します^^
あのスレの>>144さんありがとうございます
私の目標と現状を書いておいたほうが良いのかな

★Aタイトル一覧表を作る(”タイトル”の部分はそれぞれ対応したファイルにリンクを貼る)
★Bタイトル一覧表に対応したデータファイルをタイトルの数だけ作る
但し★Bを作成する前に全てのデータを1ファイルに集約した後ソートして
重複チェック、データ欠如のチェックしたいです

・データファイルはPC内にある既存のファイルから必要な部分を抽出して作成する
●必要な部分●
@<title>〜</title>(元ファイルは1行の場合と2行なたは3行の場合がある)
A<object 〜 /object>(元ファイルは1行の場合と2行なたは3行の場合がある)
B<span>〜</span>(備考欄に使おうと自分で全てのファイルに付け足しました現在はタグだけです)
(元ファイルから抽出と新規作成にタグだけ付け足しても同じ内容になります。どちらでも構いません)

他のところで教えてくれた方が居て★Aの作成と、★Bの@ABの個別取得できています
★Aの一覧表からテスト作成のリンクファイルに飛ぶことも出来ています
★Bのデータファイルを作れないで居ます

私のレベルなんですが他の言語スレで呆れ返られるくらいの初心者で
単語の名前や意味は殆どわからないです
結局、自分のやりたいことはファイル操作であることが最近知りました
それまでの経緯でHTMLとジャバスクリプトと正規表現の本
それからperlの本は自宅にあります
sed全くわかっていないです^^;
単語の意味がわからない事だらけで意味を調べて廻る事でせいいっぱいで
なかなか前進しないままです
とり急ぐわけではないのですが
もしよろしければお時間の都合の良いときだけで結構ですので教えて頂けましたら幸いです
どうぞよろしくお願い致します
0255名無しさん@お腹いっぱい。
垢版 |
2008/04/14(月) 01:07:47
>>ALL
Win版のsedの話なんだけど、sedスレがUNIX板とLinux板に
しか無いので誘導させてもらったけどいいっすか?

>>254
PerlやJavaScript(JScript)がわかるなら、そっちでやったほうがいいね。

マッチングさせたい物が1〜3行に渡るって所でモレにはわからん。
できるかもしれないが複雑になるような希ガス
0256 ◆b/iUrOax9k
垢版 |
2008/04/14(月) 01:17:30
144さん
ありがとうです
お声かけて頂いただけで嬉しかったです
まだ解説本を購入して10日程です
全部読んでいないのでどこまでできるかわかりませんが
自力でもう少し頑張ってみます
本当にありがとうございました^^
お疲れのところすいませんでした
0257名無しさん@お腹いっぱい。
垢版 |
2008/04/14(月) 23:09:24
よく流れがわからんが
やりたいこと全部を一気に教えてもらうとかせずに
知りたいポイントをしぼって一つずつ質問すれば答えてくれると思うよ。
0258名無しさん@お腹いっぱい。
垢版 |
2008/04/15(火) 03:56:38
各板で暗黙のルールみたいなのがあるんだろうか
やりたいことは先に書いた通りなんだけど
プログラム板というところで初めはHTMLの読み込み方を聞いてみたんですよ
そしたら「何がやりたいのかよくわからん。もっと詳しく。」ばかりレスが付くんです
それで私が「ファイルの読み込みです」と返事をすると「具体的にここに書かないとわからない」
これを繰り返しているうちに「後出し条件だ」とか「それはプロにしか出来ないレベル」とか
結局何も返答しないのに威張ってばっかり。
まるで解答者(のフリをして答えない)人の相手をするばかりで全く進まない
解答者らしき人を問い詰めていったら
私のような人間を探してネタをパクッタリいい人を装いながら客として誘導したり
最初から教える気は全く無いって事でした。無駄な時間ばかり過ぎていくので
板を変えてプログラマー板ってとこへも行ってみたのですが
そこでも「もっと具体的に」「わからん全部書け」「質問以前に問題あり」
散々小ばかにされては解答は無し。
やはり同じような輩が蔓延っていました
2chで教えて貰おうとするのが間違っているのかもしれません
自分は今までパソコンソフトには全く興味が無かったので
こういう汚い連中が露骨に威張り倒してるところがあるとは知りませんでした
他の板でもひどい言葉はよく見かけますが
大体はまともな意見が多いので誰かがフォローしてくれたりしますが
パソコン関係は解答者が圧倒的に優位なようだ
「只で教えてるんだぞゴルァ」とかも言われました(一度も解答しない人にw)
只で教えたくないならスルーでいいのではと言い返したら
質問者としてなって無いとか言い出す始末
そういうことでまとめて書いておいたんです
解答者の振りをする連中は答えないのに質問者をいじって遊んでるんです
でわ
0260名無しさん@お腹いっぱい。
垢版 |
2008/04/15(火) 06:40:21
うわぁ…これはひどい。

書き込む前に自分のレスを読み返してないのか?
全然まとまって無いし、誤字脱字だらけ。

スクリプト書く前にやりたい事を
簡潔な日本語で書く練習をした方が良い。
いや、マジで。
0261255
垢版 |
2008/04/15(火) 07:51:22
>>258
暗黙のルールという訳じゃないけどできるだけ楽して、人から聞きだそうという態度の人は煽られるね。
あなたにそういうつもりは無くても例えば、せっかくこのスレまで誘導したのに、

>sed全くわかっていないです^^;
>もしよろしければお時間の都合の良いときだけで結構ですので教えて頂けましたら幸いです

これだけ見ると、1から10まで教えろって言ってるように見えるよ。

色々なスレを見ればわかるが、質問をして、あなたのように煽られる人と、
煽られない人がいるが、その違いがわからないのであれば、
「2chで教えて貰おうとするのが間違っているのかもしれません」という事。
0263名無しさん@お腹いっぱい。
垢版 |
2008/04/15(火) 14:20:36
みんなレスありがと
答えてくれたことにお礼を言うのは当たり前だと思うんだけど
今までのスレは答える前から上から目線で結局答えてくれない
この人たちは解答を知らないのでは?と思うようになったんですよ
昨日も私が質問しているように見えるので他の質問に答えれないだろ
あの質問もお前だろって言うので
「それ自分じゃないよその質問には答えてあげればいいよ」とかやりあってたら
その質問者が現れた
当然のように解答者にはペコペコ謝ってる(これからも解答してもらうために)
この先、解答は期待できない私には一言もなし
初心者用の解説本をヨンから来いと言われるんだけどファイル操作は初心者用ではわからないようだ
手持ちのperlは3冊ある(超初心者用、初心者用、命令逆引き辞書)
perl解説本ではファイル操作の解説に至るまでにCGIの解説ばかりだ
やっとファイル操作の解説まで読み進めたら5ページほどで終わってるorz
perlでファイル操作は中級レベルの解説本を買わなければいけないのかと思うようになった
他の言語を調べてみた
CとかjavaとかAjax
初めのほうからファイル操作は解説している
ただ解説に使っている言葉自体が命令を使って解説しているので自分には全く理解不能だorz
>>262
それ以外にも軽く10スレ以上は廻ったよ
それで何か言語を覚えなきゃダメだなってわかったんだ
0264名無しさん@お腹いっぱい。
垢版 |
2008/04/15(火) 14:28:27
結局、私の言いたかったのは答えれないのに答える振りしてまで
優位に立ちながら出てこなくてもいいのではないのかってこと
どうせ答えないのにいかにも「解答欲しけりゃぺこぺこするのは当たり前だろカス氏ね」的な態度とって
それで解答しなくても解答者を装ったほうがいいってことなのだろか
何もわからないことまでしゃしゃりでてこなくてもってことです
偽解答者なら私でも今からすぐにできそうだw
0265名無しさん@お腹いっぱい。
垢版 |
2008/04/15(火) 14:34:59
ちなみに某スレでdieがわかんないような逆引き辞書だよ
って記載した後に解説本に載ってたサンプルが動かなかったので
なぜエラーになるのかわからないって書いたら
難しいことには答えない
でも何か答えなければって強迫観念でも沸き起こるのか
解答者を装いながら勉強するのも手段なんだろうけど
なにがなんでもしゃしゃり出てくるのは過疎っているからだろね
悪循環板だ
0266名無しさん@お腹いっぱい。
垢版 |
2008/04/15(火) 18:54:33
>>261の意味がわからないようだね。

>何もわからないことまでしゃしゃりでてこなくてもってことです

あんたが自由に質問をしていいように、他の人間もそれに対して自由にレスを付ける事ができる。
「わからないなら、しゃしゃり出てくるな」というのは単なるあんたの都合でしょ?
そうでなければ、そいつらを自分より低レベルだと見下したいのか。

そういう事をされて、このスレでクダを撒き、関係の無い人に八つ当たりをしているあんたは、
そいつらと同類という事に何故気付かない?

もう一つ。「自分」と「2ちゃんねる」のやり取りだと思っているようだけど、
レスをしているのは「個々の人間」だ。
0267名無しさん@お腹いっぱい。
垢版 |
2008/04/15(火) 18:56:42
あれだろ、渋谷までいきたいんですが教えてください。
って質問して
電車で、とかタクシーで、とか徒歩で、とか教えてくれてるのに
切符の買いかたがわかりません、とか
タクシーって何ですか?とか
徒歩って何って読むんですか?とか
馬鹿な質問してるから飽きれられてるんだろ。
0270名無しさん@お腹いっぱい。
垢版 |
2008/04/15(火) 21:42:30
>>263
>それで何か言語を覚えなきゃダメだなってわかったんだ

わかったけど勉強する気が無いわけ?
次から次へと言われるがままにPerl、JavaScript、サクラエディタ、awk、sedと
目先で楽できそうな物を追っかけてるから目的が達せられないんだ。

>初心者用の解説本をヨンから来いと言われるんだけどファイル操作は初心者用ではわからないようだ

参考書として勧められてない「独習Perl」が手元にあるが丁度半分まで読んだ所で扱われているが。

努力をしないで結果を得たいなら、それなりの報酬を出して人を募集するか、
質問専用掲示板で、具体的にサンプルを出し、これこれこーゆースクリプトを
書いて下さい、と依頼するかのどちらか。
http://okwave.jp/
0272名無しさん@お腹いっぱい。
垢版 |
2008/04/15(火) 23:16:01
何いきまいてんの?
パソコンソフトって結局ゲームソフトみたいなもんでしょ
その操作を知ってるからって威張るもんじゃないよね
自分で作ったソフトじゃないんだから
ゲームソフトの使い方だったら攻略本としてでるんだろうけどね
ソフトの使い方を先に知ったからって偉いと思ってんならスルーすればいいじゃん
メモ帳やペイントみたいなもんで使い方覚えたらどってことないと思う
いざやり始めた人間をいじくって遊ぶなんて恥ずかしいね
0273名無しさん@お腹いっぱい。
垢版 |
2008/04/15(火) 23:19:39
やぁやぁ我こそはsedの達人なり〜〜
そやって表歩いてみ
誰か「キミ凄いんだ」と声でも掛けてくれたらいいねw
我こそはプログラマーなり〜〜〜〜腹いてー
0274名無しさん@お腹いっぱい。
垢版 |
2008/04/15(火) 23:39:00
高校、大学と印刷関係の工場でバイトしてたんだ
当時職人と呼ばれる連中はタバコくわえながら
あごで指図しては怒鳴りあげたりやりたい放題
その頃何も知らなかったので「○○さん技術あるから仕方ないよね」みたいな空気があった
ん?
ちょっと待て!
機械の操作だけじゃん
今や家庭用のプリンターでも当時の技術を遥かに超えている
車にの運転とかもそうだよね
昔は女性が免許持って運転してると目立つしなんかあったら「女の運転わ・・」とか言われたもんだ
今の乗用車の性能で言えば当時のレーサーを余裕でぶっちぎれますw
そんな感じで機械やソフトを開発してるのは偉いと思うけど
操作で自慢されても5年後にはもっと簡単で3日でものになるソフトが出てるかもしれないよ
0276名無しさん@お腹いっぱい。
垢版 |
2008/04/16(水) 03:11:06
あらら、自分の非を指摘されて、それが正しいもんだから逆切れしちゃった訳ね。
まともに反論できないからって、お前の母ちゃんでべそーは無いよな(笑)
0277名無しさん@お腹いっぱい。
垢版 |
2008/04/16(水) 04:20:47
自分で作ったソフトでも無いのにw
使い方知ってるくらいでそこまで威張るか普通?
そんなことぐらいで天狗になる奴リアルではいないよw
ゲームの上手い子供が威張り倒してるのとどう違うんだ???
パソコンソフトの使い方ぐらいでこんなに意地になる連中マジで知らんわw
教えたくなければ知らん顔してればいいのに何が何でも答えるんだね(解答以外はwwwww)
多分、実社会でもずれてんだろなー
キミはた迷惑だと思われてるかもしれないよw
廻りよく見てみw
0280名無しさん@お腹いっぱい。
垢版 |
2008/04/16(水) 05:24:34
おもちゃを上手く使いこなせたから自慢してるって程度じゃないな
頭小学生並みの幼児性w
上から目線が笑えるw
こいつ 奴 プ
笑えるwww
言葉遊びできない奴は何やってもダメって典型
0284名無しさん@お腹いっぱい。
垢版 |
2008/05/15(木) 23:42:43
sedって文全体からある語句を置換するのは簡単だけど、
最初にマッチする語句だけ置換して後はそのまま出力しようとするとちょっと複雑になってしまうよね。
スクリプトの先頭に戻らない様なループを作らないといけない。
0285名無しさん@お腹いっぱい。
垢版 |
2008/05/16(金) 00:20:54
>>284
遠まわしに「最初にマッチする語句だけ置換をする簡易な方法はありませんか?」
って聞いてるのか?それとも独り言ならチラ裏へ。
0287284
垢版 |
2008/05/16(金) 21:22:18
>>286
レスサンクスです。ただ最初の0を1でやった場合はうまくいきませんでした。

s/hoge/fuga/
:loop
p
N
s/.*\n//
b loop
漏れの頭ではこんなのしか思い付きませんでした。
もっとスマートな方法があったら教えてください。
0290名無しさん@お腹いっぱい。
垢版 |
2008/07/07(月) 08:34:28
n文字目のxのみyに置換というのはどうすればいいですか
0291名無しさん@お腹いっぱい。
垢版 |
2008/07/07(月) 08:36:46
n文字目のxとは、
行頭から(n-1)個の文字のあとに出現するx のことか?
行頭からn回目に出現するx のことか?

0293名無しさん@お腹いっぱい。
垢版 |
2008/07/07(月) 12:09:14
前者です
0295名無しさん@お腹いっぱい。
垢版 |
2008/07/07(月) 21:50:58
行頭から4文字目のxをyに
echo xxxxxxxxxx | sed 's/^¥(...¥)x/¥1y/'

行頭から4個目のxをyに
echo x-x-x-x-x | sed 's/¥([^x]*x[^x]*x[^x]*x[^x]*¥)x/¥1y/'

とかとか?

4を変数にするのは漏れには粍
0297290 293
垢版 |
2008/07/08(火) 10:30:38
ありがとうございます
確かに.×4みたいに表現できたらかっこいいですが
これで文句なしです!
0300名無しさん@お腹いっぱい。
垢版 |
2008/08/29(金) 17:04:29
01101,"0600031","ホッカイドウ","サッポロシチュウオウク","キタ1ジョウヒガシ","北海道","札幌市中央区","北一条東",0

01101,"0600031","ホッカイドウ","サッポロシチュウオウク","キタ1ジョウヒガシ","北海道","札幌市中央区","北一条東",0

この第5フィールドの半角英数だけ(2個有る場合もあり)全角にしたいのですが
どのようにsedを作ればいいでしょうか?
0302名無しさん@お腹いっぱい。
垢版 |
2008/08/29(金) 21:15:26
その形式は、郵便屋の郵便番号データだろ。
エクセルか何かの一覧表をcsvに落としただけの代物だから
そのままでは役に立たないよ。
 そのままDBに格納し、専用プログラムで変換かけて正規化してる。
0303名無しさん@お腹いっぱい。
垢版 |
2008/10/08(水) 23:13:50
aaa.hoge
bbb.hage
ccc.foge

とかいう文字列があって、*.hoge以外にマッチする正規表現って出来るのでしょうか?
0305名無しさん@お腹いっぱい。
垢版 |
2008/10/09(木) 21:57:14
>>303

その文を素直に読むと、当該文字列にだけはマッチしない
正規表現と読めるが、書き込み子の心情を忖度すると、
sed 's/[a-c]{3}\.hoge/==matched==/' って事かな?
まあ、[a-c]* でも、(aaa|bbb|ccc) でも、[[:alpha:]]* でも、
マッチする表現は無数に有るけど、(・・に、だけマッチする)
を、求めているなら、そもそも*.hoge って見当外れだし、
要するに、何が知りたいのか良く分からん。
0307名無しさん@お腹いっぱい。
垢版 |
2008/10/27(月) 23:08:07
ファイル内の、スペース+改行をスペースのみに置換したいのですが、
どのように記述すればよいのでしょうか。

データ数が数十万行あるため、ファイルを全部読み込んでから
置換する方法では、容量がオーバーしてしまいました。
0309名無しさん@お腹いっぱい。
垢版 |
2008/10/27(月) 23:29:29
>>308
環境上、Perlを使用することができないんです。
sedでは難しいでしょうか。
0311名無しさん@お腹いっぱい。
垢版 |
2008/10/28(火) 00:07:58
>>310
自分の環境では、\nが認識されませんでした。
0313312
垢版 |
2008/10/28(火) 02:56:53
すまん。勘違いした。

sed はPerlと違って、入力したときに改行を取り除いてからパターンスペースに送るから、
そこで改行探しても見つかりっこない。
んで、出力時に自動的に改行は付くし、これを抑制する手段はない。

せめて awk使っとけ。Perlなくてもawkはあるだろ。
レスを投稿する