1 名前:名無しさん@お腹いっぱい。 [04/05/28 16:56.net] sedスレッド
361 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/11/28(日) 18:48:58 .net] split -50 sample.txt; mv xaa sample1.txt; mv xab sample2.txt
362 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/11/28(日) 19:52:27 .net] >>360 ,361 ありがとうございました。勉強になります。
363 名前:名無しさん@お腹いっぱい。 [2010/12/22(水) 23:54:50 .net] 入力テキストを 1行目の内容 2行目の内容 2行目の内容 3行目の内容 : 最終-2行目の内容 最終-1行の内容 最終-1行目の内容 最終行の内容 という形(隣り合った行の値を空白で連結する)に変換するにはどう書けば よいでしょうか。 sed -ne '1!p;$!p' と通せば先頭末尾以外の行を2回出力できたので、 これを2行分ずつくっつければ出来そうなのですが…
364 名前:名無しさん@お腹いっぱい。 [2010/12/23(木) 00:03:02 .net] ¥n ってどのsedでも使えるんだっけ? $ seq 1 10 | sed -ne '1!p;$!p' | sed 'N;s/¥n/ /' 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10
365 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/12/23(木) 00:47:03 .net] seq 1 10 | sed -ne '1h;1!{H;x;s/\n/ /;p}'
366 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/12/26(日) 21:44:54 .net] s/seq/jot/
367 名前:名無しさん@お腹いっぱい。 [2011/01/15(土) 11:45:22 .net] unixの基礎概念という本の中に a 21 is 10 this 3 というtest.txtファイルに対して、 sed 's/\(.*\)\( *\)\(.*\)/\3\2\1/' test.txt とすると結果は 21 a 10 is 3 this になると書いてありましたが、実行してみると並びはかわりませんでした。
368 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/01/15(土) 11:49:07 .net] >>367 確かに。それじゃぁ一番左側の .* が、最長一致で行全体に一致しちゃうから、 並びが変わらなくて正解。 悪書の書名晒して。
369 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/01/15(土) 11:50:52 .net] 久野さんらしくないミスだな。 確かに変わらないね。
370 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/01/15(土) 11:51:32 .net] >>367 真中の * の直前のスペース、 スペース2つじゃないの? コピペするとスペースが1つとかになるので注意。
371 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/01/15(土) 11:54:36 .net] これかな? www.amazon.co.jp/dp/4756144772 久野先生の本だけど、そんなのが混ざってるのか。
372 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/01/15(土) 12:01:42 .net] >>371 はいそれです。解説にも 「これはどう読むかというと、『入力行を任意の文字列1と、空白のならび2と、また別の任意の文字列3 にマッチさせ、それ全体を3、2、1の順でつなげたものに置き換える』という意味になる。」と書いてあります。
373 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/01/15(土) 12:06:04 .net] >>372 なら、>>370 の指摘通りで、キミが間違っている。 × sed 's/\(.*\)\( *\)\(.*\)/\3\2\1/' test.txt ○ sed 's/\(.*\)\( *\)\(.*\)/\3\2\1/' test.txt
374 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/01/15(土) 12:10:21 .net] 2chに不慣れな感じ
375 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/01/15(土) 12:11:56 .net] 專ブラなら安価ポップアップでちゃんと表示されるのかな >>373
376 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/01/15(土) 12:14:12 .net] >>372 紙面上に、└┘└┘みたいな感じでスペースの個数は明示してあるの? 明示してないなら紙面が悪いと思うが。
377 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/01/15(土) 12:36:36 .net] >>373 空白2個ならいけるのですか。 >>376 そういう、└┘└┘みたいな感じはなかったです。文字数的にも一文字分の感じ ですし。編集上のミスかもしれませんけど。
378 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/01/15(土) 14:25:37 .net] >>376 > 「これはどう読むかというと、『...、空白のならび2と、... って書いてあるんだろ?
379 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/01/15(土) 14:29:14 .net] >>378 それは、¥2 のこと。「スペース2個」のことじゃないよ。
380 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/01/15(土) 14:31:27 .net] >>378 空白のならび
381 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/01/15(土) 14:34:38 .net] >>378 正規表現を理解してないバカ発見。 任意の文字列 → \1 空白の並び → \2 別の任意の文字列 → \3 と言ってるだけのこと。それとスペース2つ書くのとは意味が違う。
382 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/01/15(土) 14:44:12 .net] むしろhtmlのレンダリングを理解していない
383 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/03/25(金) 20:16:28.23 .net] 任意の文字列の前か後ろの少なくともどちらかは、任意でない特定の文字・文字列(含^$)でないと困ったことになるということですね? 俺も前それで失敗した。
384 名前:名無しさん@お腹いっぱい。 [2011/04/21(木) 06:41:06.41 .net] sedの話題はこっちへ くれぐれもシェルスクリプトスレに書き込まないように!
385 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/04/21(木) 13:17:24.83 .net] >>377 \2,\3がφで全体がマッチ \1に行全体 一つ目が\([^ ]*\)ならよかった。
386 名前: 忍法帖【Lv=38,xxxPT】 【東電 69.2 %】 株価【E】 mailto:sage [2011/04/27(水) 08:53:07.51 .net] AAA BBB=111 CCC=111 この行の111を000に置き換えするのに sed -e 's/BBB=111/BBB=000/' とする以外にもっとスマートな書式を教えてください。 GNU sedです
387 名前:名無しさん@お腹いっぱい。 [2011/04/27(水) 12:11:27.62 .net] >>386 sed -e "s/1/0/g"
388 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/04/27(水) 12:35:36.38 .net] >>386 > sed -e 's/BBB=111/BBB=000/' これじゃ、お題 > この行の111を000に置き換えするのに を満たさない。 矛盾を含む質問に答えることは不可能。
389 名前:386 mailto:sage [2011/04/27(水) 13:29:23.92 .net] >この行の111を000に置き換えするのに この行のBBB=111だけをBBB=000にする書式でした すいません。
390 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/04/27(水) 13:52:24.65 .net] スマートの基準がわからないけど、BBBが二度出現するのが嫌なら sed -e 's/\(BBB\)=111/\1=000/'
391 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/04/27(水) 14:59:23.65 .net] >>386 s/111 /000 / で十分
392 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/04/27(水) 16:29:55.08 .net] AAA BBB=111 CCC=111 DDD=111 EEE=1111
393 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/04/27(水) 19:10:11.78 .net] sed -e /BBB=/{'s/111/000/'} シェルスクリプトスレで覚えたやり方
394 名前:名無しさん@お腹いっぱい。 [2011/05/18(水) 23:11:59.71 .net] sed -e 's/<space><space>*/<space>/g' test.txt って動かないんですが?
395 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/05/19(木) 09:49:48.72 .net] 動きますよ?
396 名前:名無しさん@お腹いっぱい。 [2011/05/19(木) 10:16:19.05 .net] EUCだとうまく動作しないのだが、これはデフォルトなのかな
397 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/05/19(木) 10:19:25.96 .net] EUCでも問題ないけど。
398 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/05/19(木) 17:40:32.75 .net] そもそも、EUCはそういうツールで不都合がないようにということで作られたわけで。 日本語独特の文節や漢字などに対応しない、というのはあるけど。
399 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/05/19(木) 18:16:12.59 .net] >>396 > うまく動作しない How?
400 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/05/19(木) 18:31:23.35 .net] <space> ってそのまま打ってるってオチだろw
401 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/05/19(木) 19:04:04.07 .net] >400 そのとおりでした;すいません
402 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/05/19(木) 19:05:53.32 .net] EUCじゃないファイルではうまくいってたのか?
403 名前:401 mailto:sage [2011/05/19(木) 20:27:32.13 .net] >402 それは別人です
404 名前:401 mailto:sage [2011/05/30(月) 17:29:13.86 .net] 偽物ばかり 氏ね
405 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/09/09(金) 13:29:22.13 .net] 急に Windows 7 64 bit で ssed が使えなくなっま。
406 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/09/12(月) 17:43:29.52 .net] で?
407 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/09/26(月) 15:16:39.67 .net] xp モードで解決したわけですね
408 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/30(水) 13:06:39.22 .net] tab8のテキストをインデントを崩さずに半角スペースに置き換えるにはどうすればいいですか?
409 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/30(水) 14:42:23.70 .net] expand -8
410 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/30(水) 14:49:05.34 .net] sedで、じゃね。
411 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/30(水) 14:57:37.44 .net] エスパーすると質問者は手段はsedじゃなくても良いと考えてる
412 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/30(水) 14:58:33.13 .net] それならこのスレで聞かないでしょ。
413 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/30(水) 15:01:50.53 .net] sedでもできそうだと勘違いしたからでしょ
414 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/30(水) 15:08:26.12 .net] >>410 それなら「expand -8相当の処理をsedでやるには?」って聞くでしょ。
415 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/30(水) 15:34:39.95 .net] >>414 expand を知らなかった、という可能性は。
416 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/30(水) 15:38:55.31 .net] >>415 というかexpandを知らなかったからこそ 「tab8のテキストをインデントを崩さずに…」みたいな まわりくどい言い方で聞いたんでしょ。 だからsedに関係なくexpandを回答すれば回答として十分。
417 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/30(水) 15:49:38.28 .net] >>408 そろそろ正解を。
418 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/30(水) 15:50:50.14 .net] >>416 expandを知らないけどsedを使わなければならない理由があるんだよ!
419 名前:408 mailto:sage [2011/11/30(水) 17:44:22.28 .net] すっごく登場しにくくなったけど>>415 さんが正解です。 >>409 エスパーさんありがとう。 皆さん混乱させてスイマセンでした。置き換えと言えばsedしか知らなかったので。
420 名前:名無しさん@お腹いっぱい。 [2012/04/06(金) 20:12:58.82 .net] 文字列unkoの行を見つけてから文字列chinkoの行まで表示 ってどうやればいいの?
421 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/06(金) 20:38:54.03 .net] >>420 当たり前過ぎるから回答は控えるけど、 エスパーすると -n オプション忘れて全部の行が表示されてしまったってオチだろな
422 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/06(金) 23:35:46.08 .net] そんなことなくてその当たり前すぎる内容がわからない初心者さんなんでしょう。 回答してあげないなんてひどいね
423 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/07(土) 07:37:37.99 .net] >>421 あ、-n だけのことだったんですね。失礼しました。 >>422 そこまで初心者じゃないです。
424 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/07(土) 08:46:29.91 .net] 自己申告乙
425 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/08(日) 06:16:06.93 .net] 初心者の土瓶口だけど、chinkoの前の行まで表示 ってのはできるの?
426 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/08(日) 06:20:31.95 .net] >>425 /start/,/end/{/end/!p}
427 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/08(日) 08:34:53.99 .net] >>426 いや、それは知ってるよ。 そういうことせずに直接○○の行の手前まで指定はできないのか聞いてるんだが
428 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/08(日) 16:24:07.33 .net] unkoの次の行から、ってのは難しいのかな・・・
429 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/08(日) 16:42:05.75 .net] >>428 startを含まず、endを含む場合 sed -n '1,/start/b; 1,/end/p'
430 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/09(月) 11:14:30.69 .net] みんな1行野郎なの? スクリプトファイルは書かないの?
431 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/10(火) 11:14:22.67 .net] >>430 スクリプト書くほどならperlで書いちゃう
432 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/11(水) 03:53:49.91 .net] perlは英語のマニュアルが読めなくて挫折した。あんときperlがんばっとけばよかったorz
433 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/11(水) 08:09:32.29 .net] 書くよ
434 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/13(金) 05:52:55.50 .net] DTPでテキストの整形するとき、いっぱい痴漢(←なぜか第一候補)するよ。
435 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/13(金) 18:41:21.71 .net] >>432 俺はPerlは書籍で覚えたな、ラクダとあと何かUnixツールとして使うための本
436 名前:名無しさん@お腹いっぱい。 [2012/08/06(月) 23:45:58.92 .net] 教えてください! テキストファイルの最後にある空行を削除するにはどうすればいいですか? $ sed -n ' 105,$p' Ga.inp search.LowerE -3.000 # default=-3.000 (Hartree) search.UpperE 20.000 # default=20.000 (Hartree) num.of.partition 1200 # default=300 matching.point.ratio 0.67 # default=0.67 の様に、最後に無駄な空行のあるファイルがたくさんあって、一括削除したいのです。 ただし、途中にある改行は、ファイルの見やすさのために残しておきたいのです。 ed で言えば $;?^.?;+,$d で出来ると思うのですが、sed では';'や'+'が使えず、どうしてよいやら・・・
437 名前:名無しさん@お腹いっぱい。 [2012/08/07(火) 00:42:37.55 .net] パターンスペースが 空行だったらホールドスペースに追加 空行でなかったらホールドスペースを出力後にパターンスペース出力 最後の連続空行はホールドスペースに収まったままで終わる。 とか考えてみたがあってるだろうか。
438 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/08/07(火) 03:04:20.52 .net] Nコマンドを使っていて必要な最期の行を全部すっとばしたことが、私にもありました
439 名前:名無しさん@お腹いっぱい。 [2012/08/07(火) 22:00:53.40 .net] >>437 多分やりたいのはそれだと思います。 具体的に同書けばいいのでしょう?
440 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/08/08(水) 02:01:32.99 .net] もうawkかなにかで済ましてるだろうけど練習 437とは違うやり方になった sed -n -e ' :loop /^\n*$/{ N b loop } p '
441 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/08/08(水) 21:26:58.20 .net] >>440 ありがとうございます! うまくいきました。
442 名前:名無しさん@お腹いっぱい。 [2012/08/17(金) 16:05:21.04 .net] gsedですが、 ブラケット開きがあって、ブラケット閉じ以外のものが1つ以上あって、ブラケット閉じがある場合、 で、これどこがおかしいのでしょうか? ★☆が現れてくれないんですけど。 s/\[\([^\]][^\]]*\)]/[★\1☆]/g
443 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/08/17(金) 16:29:03.18 .net] >>442 バックスラッシュが余計 sed 's/\[\([^]][^]]*\)]/[★\1☆]/g'
444 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/08/17(金) 16:43:13.83 .net] ありがとうございます。 つまり、[ と ] の間にあるものはどんなものでも 「これは文字です」と宣言しなくてもいい(\が要らない)ということですか。 やってみます。ありがとうございました。
445 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/08/17(金) 16:45:03.71 .net] >>444 そうなんだけど、] の場合は、[^ の直後にある場合のみ 普通の文字の ] とみなすという仕様。( [ の直後でも同様)
446 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/08/17(金) 18:35:40.56 .net] テキスト [aaa], [bbb] <あああ>の(アアア)と<いいい>の(イイイ) 欲しい結果 ★aaa☆, ★bbb☆ ★あああ☆の★アアア☆と★いいい☆の★イイイ☆ s/[<[(]\([^<>[]()][^<>[]()]*\)[>])]/★\1☆/g 予想はしたけど、まるで反応してくれません。 半角の約物3種類は欲張ったかなあ、と1つずつやってみているところです。
447 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/08/17(金) 18:37:54.56 .net] >>446 >>445 に書いてあること読めよ。 [^ の直後に ] を置かないと、普通の文字としては認識されないんだよ。 [^....] の中の .... の順番を変えろということ。
448 名前:名無しさん@お腹いっぱい。 [2012/08/17(金) 18:41:47.66 .net] >>446 s/[[<(]\([^]<>()][^]<>()]*\)[]>)]/★\1☆/g
449 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/08/18(土) 03:20:55.76 .net] >>447-448 ああ、すみません。言葉が足りませんでした。読んだ上でわざと変えてみたのです。
450 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/08/19(日) 00:04:02.62 .net] え?
451 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/08/20(月) 16:08:01.31 .net] ごめんなさい。>>446 は[]の中の[]に全部\を付けたつもりでした(このミスが大元ですね) エスケープすればどの位置にあっても文字とするというsedを使っていたのと、 最長一致の正規表現も使っていたので混乱してしまいました。 「直後」を何度も言われていたのに、「直後『だけ』」に思いが至りませんでした。
452 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/10/25(木) 06:00:58.34 .net] gsed で、置換コマンドの s を間違えて a と入力したスクリプトを実行したら、 一行ごとにその行が挿入されていて笑ってしまった。 a コマンドなんて知らなかったわ。
453 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/10/25(木) 06:04:10.00 .net] 笑えんなぁ。
454 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/10/25(木) 06:09:46.09 .net] 笑って許して♪
455 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/10/25(木) 06:45:25.34 .net] gsed って置換するときにタグの数が合ってなくてもエラーが出ないのね。
456 名前:名無しさん@お腹いっぱい。 [2012/10/25(木) 23:53:29.32 .net] aなんて、edの基本じゃん!
457 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/10/27(土) 12:38:13.67 .net] マニュアルでも最初のほうに来ちゃうしね
458 名前:名無しさん@お腹いっぱい。 [2012/11/05(月) 10:24:08.04 .net] 質問があります テキストファイルaaaの中身 <hoge> abc </hoge> <hoge> def </hoge> これを <hoge> def </hoge> のようにabcのタグだけ削除したい sed -i "/^<hoge>\n abc\n<\/hoge>/d" aaa これでは削除できませんでした。 改行を含む文字列を削除する場合どうしたらいいでしょうか?
459 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/11/05(月) 10:26:48.87 .net] sedでやるのは無理があるんじゃないか。
460 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/11/05(月) 12:39:56.92 .net] >>459 いや、なせば成る
461 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/11/05(月) 13:24:25.09 .net] cat aaa | sed -e ':loop; N; N; !b loop; s/^<hoge>\n abc\n<\/hoge>//' これで良いのかな?