1 名前:名無しさん@お腹いっぱい。 [04/05/28 16:56.net] sedスレッド
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>//' これで良いのかな?
462 名前:名無しさん@お腹いっぱい。 [2012/11/05(月) 14:31:53.41 .net] >>459-461 ありがとうございます しかし削除できませんでした ちなみにsedじゃなくて何でやったほうがいいでしょうか?
463 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/11/05(月) 14:34:20.66 .net] Perl でも Ruby でも何でもいいよ。
464 名前:名無しさん@お腹いっぱい。 [2012/11/05(月) 14:56:37.97 .net] >>463 はい。ありがとうございます。できればシェルスクリプトで書きたいので PerlでもRubyでも何でもいいとは思いますがそれ以外でいいコマンドはありませんでしょうか?
465 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/11/05(月) 15:19:40.83 .net] grep -n abc して、出てきた数字でsedスクリプト作っちゃうとか。
466 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/11/05(月) 15:53:27.99 .net] >>464 シェルスクリプトから呼び出せば良いんじゃないの? sedだって所詮は外部コマンドだし。
467 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/11/05(月) 21:31:52.30 .net] >>482 sed -n -f hoge.sed <aaa hoge.sed: /<hoge>/b hoge p b end :hoge N N /<hoge>\n abc\n<\/hoge>/!p :end
468 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/11/06(火) 04:00:03.51 .net] >>458 aaaがXMLならXMLパーサ(を使える言語)を使った方がいいと思う /<hoge>/!b :loop $b last /<\/hoge>/!{ N b loop } :last s/<hoge>[ \n\t]*abc[ \n\t]*\(<\/hoge>\)*//g
469 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/11/20(火) 09:09:15.11 .net] すみません。教えて下さい。 テキストの最終行のあとに空白行を1行入れる、というのはどう書くのでしょうか。 iコマンドでは最終行の前に空白行ができてしまいます。
470 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/11/20(火) 09:23:56.98 .net] sed -e '$a\ hoge '
471 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/11/20(火) 09:30:53.76 .net] ありがとう。助かりました。
472 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/11/22(木) 01:22:12.85 .net] 最終行の後なら $ cat >> tmp $ で十分であるようにも思うけどなぁ
473 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/11/22(木) 03:29:10.92 .net] ああ、なるほど。いつか思い出して使うこともあるでしょう。ありがとう。
474 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/11/22(木) 07:19:23.18 .net] >>472 1行追加ならechoの方が楽でね?
475 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/11/22(木) 11:59:50.11 .net] そうなんだけど、sedファイルの中に書き込みたかったんですよ。でも、ありがと
476 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/04(金) 10:51:16.73 .net] optimized sed www.commandlinefu.com/commands/view/11707/optimized-sed 巨大ファイル対象の場合は sed '/foo/ s/foo/foobar/g' <filename> が sed 's/foo/foobar/g' <filename> よりも効率がよいとの事ですが、どういう原理でそうなるんでしょうか
477 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/04(金) 12:52:49.06 .net] "foo"の在る行だけを対象にするから? どのみち見つけに行くんだから同じじゃん?と想ったり想わなかったり
478 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/04(金) 12:55:13.46 .net] >>476 100万行のテキストファイル、GNU版のsedで試してみたけど どっちも変わらなかったぞ
479 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/05(土) 01:12:15.15 .net] つまり、都市伝説って事か どのsedかによっても違うんだろう
480 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/05(土) 09:49:03.44 .net] 対象になる行の割合にもよるんじゃないの?
481 名前:478 mailto:sage [2013/01/05(土) 10:26:37.21 .net] 1億行、954MBのファイルでやってみた $ seq -w 100000000 > large.txt $ sed --version | head -1 sed (GNU sed) 4.2.2 $ grep '111' large.txt | wc -l 549739 $ for i in {1..3}; do time sed 's/111/999/g' large.txt > /dev/null; done sed 's/111/999/g' large.txt > /dev/null 28.68s user 0.77s system 80% cpu 36.731 total sed 's/111/999/g' large.txt > /dev/null 28.75s user 0.68s system 82% cpu 35.666 total sed 's/111/999/g' large.txt > /dev/null 27.99s user 0.61s system 81% cpu 35.067 total $ for i in {1..3}; do time sed '/111/ s/111/999/g' large.txt > /dev/null; done sed '/111/ s/111/999/g' large.txt > /dev/null 27.68s user 0.63s system 82% cpu 34.418 total sed '/111/ s/111/999/g' large.txt > /dev/null 27.96s user 0.72s system 57% cpu 49.912 total sed '/111/ s/111/999/g' large.txt > /dev/null 28.84s user 0.71s system 81% cpu 36.287 total
482 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/04/08(月) 00:25:48.59 .net] >type diff diff is /usr/bin/diff > type diff | sed 's,[()],,g;s,^[^/][^/]*,,;q' /usr/bin/diff s,[()],,g;s,^[^/][^/]*,,;q' ってどう解釈すれば良いんですか?
483 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/04/08(月) 05:56:57.86 .net] 人それぞれ で良いんじゃない
484 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/05/21(火) 06:44:35.71 .net] Macでgsedを使っています。やりたいこと ★のある行と☆のある行の間にある行のうち、ひらかなを含む行の行頭に@を付ける。 (ひらかなが1文字でも入っていれば良い) /★/,/☆/{ /[あ-ん]/s/^/@/ } 無視されてしまうんです。助けてください。
485 名前:484 mailto:sage [2013/05/21(火) 08:34:08.57 .net] [あ-ん]がいけなかったみたいです。[あいうえお(中略)ん、。]でできました。
486 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/05/21(火) 13:23:01.78 .net] あ-ん♪
487 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/05/21(火) 16:08:58.36 .net] >>484 ぽーつ使ってるならssed入れてpcre環境にすれば\p{Hiragana}とか できるんじゃね
488 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/05/22(水) 03:36:42.23 .net] ごめんワカンナイ
489 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/05/22(水) 16:53:09.99 .net] ssedって次期GNU sedのこと。 GNUのページでもこの拡張には依存するなって書いてる。 ただ、macでBSD系のsedじゃなくGNU sed使ってるんなら port依存って意味ではあんまり変わんないんじゃない?
490 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/03/04(火) 03:45:38.92 .net] >>334 横から&亀だが sed '/pattern/ { '"`sed 's/^/i\\\\\n/' <file`"' }'
491 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/06/28(土) 14:33:09.63 .net] >>491 UNIX板で答えない方が良いのかもしれませんが、適当なスレが無さそうなので windows のコマンドプロンプトで実行しているとして答えます。 cmd.exe の仕様が原因と思われる sed -e "s/^/ "^""/" hoge.txt > hoge2.txt
492 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/06/28(土) 14:56:57.91 .net] sedを使用する際の注意事項があります。 コンピュータのCPUが何ビットであるか調ベておく事が大切です。 32ビットCPUを搭載したコンピュータには、 32ビット用のsedをインストールすること。 64ビットCPUを搭載したコンピュータには、 64ビット用のsedをインストールすること。 これを間違えれば正常にsedが動作しません。
493 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/20(水) 00:07:25.20 .net] sedの使い方がわからず、試行錯誤しているのですが、うまくいきません。 行の先頭に特定の文字列(たとえば"abc")があったらその行を丸ごと"xxxxxxxxxxx"に置換するにはどうすれば良いでしょうか。 例: abc123456 が xxxxxxxxxxx に変換さえるイメージです。
494 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/20(水) 01:37:59.80 .net] >>493 sed -n /^abc/p sed s/^abc.*$/xxxxxxxxxxx/
495 名前:名無しさん@お腹いっぱい。 [2014/08/20(水) 01:39:49.69 .net] パイプで使うバージョンを書く |sed 's/^abc.*/xxxxxxxxxxx/'
496 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/20(水) 02:29:51.22 .net] sed '/^abc/cxxxxxxxxxxx'
497 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/20(水) 03:06:02.58 .net] abc -> xxx abc123 -> xxxxxx abc12345 -> xxxxxxxx をsedでやるならどう書くんだろ
498 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/20(水) 06:22:02.63 .net] >>497 s/./x/g
499 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/20(水) 10:13:13.33 .net] >>493 sed '/^abc/s/./x/g' かな?
500 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/09/17(水) 02:37:37.33 .net] パスワードのゼロ埋め(ゼロパディング)と見た。
501 名前:名無しさん@お腹いっぱい。 [2014/10/21(火) 08:56:25.00 .net] バックスラッシュって読みやすいか?日本語だと使い道無いし。 プログラミングで正規表現書いてると、 s/\dhoge\sfuga\s/hoge/ ↑似たような記号ばっかりで読みづらいw s/¥dhoge¥sfuga¥s/hoge/ ↑こっちのほうが読みやすい
502 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/10/21(火) 10:00:39.43 .net] 使い道ある記号だったらエスケープシーケンスにも 円記号ねじ込むにも適さなかっただろうよ
503 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/10/21(火) 11:48:25.80 .net] 最近可愛く見えてきた。意味を持たない組み合わせに腹を立てたり。
504 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/10/21(火) 13:00:32.47 .net] スラッシュとバックスラッシュが紛らわしいんならスラッシュ以外の 文字を区切りに使えばいいんでないの?
505 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/10/21(火) 13:05:36.87 .net] 区切りを変更できるのはsコマンドとかの時だけ
506 名前:名無しさん@お腹いっぱい。 [2014/11/06(木) 07:19:05.88 .net] 1,/hoge/ のようにaddressに正規表現を使う時のスラッシュを 他の記号に変えることはできますか? s@@https://@ のようなことをしたいのです
507 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/11/06(木) 08:27:36.11 .net] >>505 にあるようにできない。
508 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/11/06(木) 08:42:54.81 .net] できる実装もあるかもしれない
509 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/11/06(木) 09:21:40.14 .net] コピペ改変にかまうな
510 名前:名無しさん@お腹いっぱい。 [2014/12/23(火) 16:27:26.38 .net] 他人が書いたコードで、例えば文字列が、 11 AAA [BBB] CCC/DDD.txt EEE FFF-01 だった場合に、ここから[]内の文字(BBB) を抜き出すために、 sed -e 's/\[//g' -e 's/\]//g' | awk '{ print $3 }' というスクリプトで BBB を取得しています。 このスクリプトを変更して、DDD を取得したいのですが、 どう書けば良いのでしょうか?
511 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/12/23(火) 19:23:47.26 .net] s,.*/,,; s,\.txt.*,,
512 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/12/24(水) 15:41:51.14 .net] ありがとう
513 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/12/28(日) 06:55:35.52 .net] >>506 1,\@hoge@ linuxで確認済み 検索でここにたどり着いた人の為と、何処のコピペか検索してもそれらしいものが出なかったので、貼っておきます POSIX sed pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html In a context address, the construction "\cBREc", where c is any character other than <backslash> or <newline>, shall be identical to "/BRE/". If the character designated by c appears following a <backslash>, then it shall be considered to be that literal character, which shall not terminate the BRE. For example, in the context address "\xabc\xdefx", the second x stands for itself, so that the BRE is "abcxdef". BSD On-line Manual of "sed" www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=sed&dir=jpman-5.4.0%2Fman§=0 1. コンテキストアドレスにおいて、バックスラッシュ (``\'') と改行以外の 文字を正規表現の区切りとして用いることできます。 区切り文字の直前に バックスラッシュを置くことで、区切り文字をリテラルに解釈させることが できます。 たとえば、コンテキストアドレス \xabc\xdefx において、区切 り文字は ``x'' で、2つめの ``x'' は ``x'' という文字を表します。 よっ て、正規表現は ``abcxdef'' と解釈されます。 LINUX Man page of SED linuxjm.sourceforge.jp/html/GNU_sed/man1/sed.1.html /regexp/ 正規表現 regexp にマッチした行にマッチする。 \cregexpc 正規表現 regexp にマッチした行にマッチする。c には任意の文字を指定できる。
514 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/12/28(日) 17:04:08.20 .net] おおお、グレート義太夫
515 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/10(水) 23:22:09.08 .net] どうにも理解が出来ず教えて欲しいのですが sed.sourceforge.net/sed1line.txt から # print paragraph if it contains AAA (blank lines separate paragraphs) sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;' これがどうにもわかりません。 H;$!d;の$!dが何故必要なのか? 動作の流れを教えて頂けないでしょうか?
516 名前:516 [2016/02/21(日) 00:09:27.85 .net] age
517 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/21(日) 01:34:16.62 .net] タダで教えろって?
518 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/21(日) 10:27:51.16 .net] dがあるのは段落の区切りまで何も出力させないため ファイル末尾も段落の区切りだから$!が要る ファイル末尾に必ず空行があるなら$!は要らない dでそのサイクルが終了することは知ってますね?
519 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/21(日) 10:54:53.96 .net] 10日も呆けーと待ってたことに驚き
520 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/21(日) 13:02:47.07 .net] でも教えてもらえたじゃないかw
521 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/21(日) 14:02:51.01 .net] 自分で試せば小一時間で気付くのに、と思う
522 名前:516 mailto:sage [2016/02/21(日) 16:55:28.79 .net] >>518 有り難うございます。助かりました。 !dをpの様に認識してしまっていて次のサイクルに移行させる イメージがなく、$!dを最終行を表示させるとしか思ってなくて 色々試してもどうにも腑に落ちないもので質問させて頂きました。
523 名前:名無しさん@お腹いっぱい。 [2016/04/28(木) 22:19:31.31 .net] sedで桁そろえってどうしたらいいですかる 具体的にはls -l で出てきた結果のうち、ファイル名を最初に左揃え、ファイルサイズを右揃えで出力したいのですが、 sedコマンドだけで可能ですか?
524 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/29(金) 06:51:34.85 .net] そういうのは awk で。
525 名前:名無しさん@お腹いっぱい。 [2016/04/29(金) 07:15:23.81 .net] どうしてもsedだけでやたいんです! お願いします!
526 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/29(金) 07:58:13.44 .net] UNIX哲学に戻るんだ。 1つのことをうまくやる、ものを組み合わせればいいんだから、まずはawkでやってみる。
527 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/29(金) 08:26:18.75 .net] awkでもいいが、シェル内部コマンドだけでもできるぞ。 ls -l | while read m l u g s t1 t2 t3 f do printf
528 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/29(金) 08:29:01.55 .net] ありゃ? 記号があると書き込みが切れる。記号を全角にした。半角に直して読んでね。 ls -l | while read m l u g s t1 t2 t3 f do printf ”%-20s %8d %s\n” ”$f” ”$s” done
529 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/29(金) 09:51:04.97 .net] FreeBSD$ stat -f %-20N%8z * Linux$ stat -c %-20n%8s *
530 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/04/29(金) 10:02:30.45 .net] sedでの右揃えは、一旦中身のみを切り出してから左側に余分なスペースを加えてから 右から文字数固定で切り取る。 左揃えはその逆。
531 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/08/11(木) 22:51:26.97 .net] >>144 の更新 NetBSDとOpenBSDの標準sedで-iが導入。 入力ファイルを書き換えるには? ・-i オプションをつかう ・-i オプションがないsedをつかっているなら in-place editing 対応の sed の導入を検討する ・ed を使うことを検討する ・perl を使うことを検討する ・一時ファイルを必要としないファイル命名法を検討する ・www.idaemons.org/projects/inplace/ を使う ・(rm hoge.dat; sed 's/aaa/bbb/' > hoge.dat) < hoge.dat FreeBSD の標準 sed に -i オプションが取り入れられたのは 4.7R でそれ以前には無い。 NetBSD の標準 sed に -i オプションが取り入れられたのは 7.0 でそれ以前には無い。 OpenBSDのの標準 sed に -i オプションが取り入れられたのは 5.8 でそれ以前には無い。 MacOSX の 標準 sed は FreeBSD 由来なので元になるバージョンに依存する。 MacOSX 10.3以降は FreeBSD 5.1R由来なので、 -iオプションはある。 以前のGNU sed には in-place editing 機能はない (Changelog によると 2001-09-25 ) (3.02には in place オプションは無い)
532 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/17(金) 14:26:32.28 .net] データハンドリングとしては、 入力ファイルをコピーして更新をかける 更新処理が終わったら、入力ファイルを削除して更新ファイルをりネームして入力ファイルとする みたいな方法で必要十分。 なんでもかんでもツールで処理するのではなく、OSが得意な機能はOSのものを使う。 クラッシュがいつ起こってもデータが確保できるのは、そういう、むしろドンくさい方法。 お遊びならいざしらず、仕事では安全確実性が少しでも高い方を選ぶのがプロ。 無論、履歴から復元なんてのも、データによっては必要だが、 処理が複雑になれば、一般的にトラブルも増える。 どこまで何をやるかは、ひとえにそのデータの重要性にかかっている。 バックアップから戻してもたいした事がないなら、何やってもいいだろう。
533 名前:名無しさん@そうだ選挙に行こう! Go to vote! mailto:sage [2017/10/22(日) 14:32:07.16 .net] >>274 どうだろうね。数式の入った文章を写植 は、昔の印刷物のほうが上でしょ。 印刷屋に頼んでもtexの設定をそのまま つかわずindesignに読み込むから、 ひどいものだ
534 名前:名無しさん@そうだ選挙に行こう! Go to vote! mailto:sage [2017/10/22(日) 15:59:51.51 .net] 昔も今もTeXでやってくれる印刷屋に頼めばいいじゃん。
535 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/12/08(金) 20:25:27.67 .net] 今も昔も餅屋のふりした餅屋はたくさんあるからな〜。餅の見る目のない会社だったってことで。
536 名前:名無しさん@お腹いっぱい。 [2017/12/29(金) 10:21:45.77 .net] 誰でも簡単にパソコン1台で稼げる方法など 参考までに、 ⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。 グーグル検索⇒『宮本のゴウリエセレレ』 8DL33JQ0HX
537 名前:名無しさん@お腹いっぱい。 mailto:age [2018/01/18(木) 12:08:00.54 .net] https://mevius.5ch.net/test/read.cgi/unix/1489979246/l50 ここから来ました。 sedでiフラグとdフラグを両方立てることってできないのでしょうか。 $ cat file aaa AAA $ cat file | sed -e '/aaa/id' AAA d aaa
538 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/18(木) 12:57:27.52 .net] 頑張って /[Aa]\{3\}/d と書く 今時の正規表現修飾子とか使えるsedがあるなら俺も知りたい
539 名前:538 mailto:sage [2018/01/18(木) 13:11:30.41 .net] >>538 ありがとうございます。とりあえずその路線で行きます。 素人目にはiフラグとdフラグを同時に使えないというのは極めて不自然というか 非対称な気もしますが…… 二つの役割は直交関係にあって,別に依存・背反はないと思うんですよねぇ。
540 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/18(木) 16:19:03.70 .net] GNU sedなら I 大文字が使えるじゃあないか
541 名前:538 mailto:sage [2018/01/18(木) 16:43:03.48 .net] $ printf '%s\n%s\n%s\n' 'AAA' 'Bbb' 'aaa' | gsed -e '/a/Id' Bbb おおおおおお!ありがとうございます。Iフラグは知りませんでした! しかしこれ GNU の独自拡張なんですよねぇ……欲を言えばPOSIX標準に従いたかったんです…… すいません。とりあえず>>538 の一文字づつ手動で置き換えるというやりかたで通します。 そして今気付いたんですが iという文字はフラグだけでなくて「行挿入」というコマンドとしての 解釈もあるんですね。だから「id」でdが当該箇所に挿入された形になったんですね。 馬鹿だなぁ俺
542 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/19(金) 06:11:37.28 .net] iもdもコマンドじゃないの?
543 名前:542 mailto:sage [2018/01/19(金) 16:10:54.99 .net] >>542 あーその通りですわ。 逆になぜ id で大文字小文字を無視して削除ができると思ったのか疑問なくらい阿呆でした……。 精進し直します。 # 素人考えで言うと「大文字小文字を無視して検索→その行でコマンド実行」なんて頻繁に実行するだろうに それに対応した機能が (POSIXの範囲で) 存在しないってのはちょっと頂けないですねぇ…… # 尤も上級者の方々は他の,もっと優美な方法を採ってらっしゃるのかも知れませんが。
544 名前:名無しさん@お腹いっぱい。 mailto:age [2018/02/03(土) 04:17:58.88 .net] ある文字がある回数続く*行*を置換することってできないんでしょうか。 ... xbcea aaa aaa aaa dkjef ... ↑このようなファイルで、 cat ./file | sed -e 's/aaa\naaa\naaa/bbb/g' とやることで ... xbcea bbb dkjef ... このような出力が得られることを望んでいるのですが、上記のコマンドでは無理でした。> < ご教授願いますm(_ _)m
545 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/03(土) 04:47:53.50 .net] printf "xbcea\naaa\naaa\naaa\ndkjef\n" | sed '/aaa/{H;d;};/aaa/!{x;/^$/d;s/aaa\naaa\naaa/bbb/p;x;}' 汚いw
546 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/14(水) 10:22:09.93 .net] ☆ 日本の、改憲をしましょう。現在、衆議員と参議院の両院で、 改憲議員が3分の2を超えております。『憲法改正国民投票法』、 でググってみてください。国会の発議はすでに可能です。 平和は勝ち取るものです。お願い致します。☆☆
547 名前:名無しさん@お腹いっぱい。 [2018/05/22(火) 03:04:16.83 .net] 知り合いから教えてもらったパソコン一台でお金持ちになれるやり方 時間がある方はみてもいいかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 9M87D
548 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/28(火) 06:46:05.19 .net] sedとawkとgrepの違いって?
549 名前:名無しさん@お腹いっぱい。 [2018/08/31(金) 10:07:25.21 .net] sedはストリームエディタ grepは文字列検索 awkはスクリプト言語
550 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/12/13(木) 22:08:13.14 .net] | sed -n -e "/<station /h;/<prog /{N;G;s/\n//gp}" ^ この行の後ろに<pfm>から始まる行をくっつけたいんですが、 すごく難しくてどうやっても出来ないです どうやればいいんでしょうか?
551 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/12/14(金) 00:16:49.36 .net] イマイチやりたいことがわからず それに頭の | と尻の ^ はなんざんす それが行ってことざんすか
552 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/12/14(金) 00:49:07.99 .net] >>551 nkf.exeを併用しているバッチ内のコードをコピペしただけなので、|と^は関係ないです >>550 ではxmlファイル内の「<station〜>タグで始まる行」と 「<prog〜>タグで始まる行+その次の行」を1行の文字列に連結しているので、 さらにその後ろに<pfm>タグで始まる行を連結して1行にしたい、ということです (この後に正規表現で最終的にcsv形式に置換しますが割愛)
553 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/12/15(土) 09:02:56.15 .net] | sed -n -e "/<station /h;/<prog /{N;G;s/\n//gp}" ^ <pfm> くっついた!
554 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/12/15(土) 19:39:46.09 .net] あ、できたのでもういいです
555 名前:名無しさん@お腹いっぱい。 mailto:sage [2019/02/09(土) 12:27:35.91 .net] 10年以上前にファイル内容を逆順に表示するスクリプトコピペしたけど '1!G;h;$!d' 未だに内容理解できてないぜ!