1 名前:名無しさん@お腹いっぱい。 [04/05/28 16:56.net] sedスレッド
5 名前:名無しさん@お腹いっぱい。 [04/05/28 17:14.net] sedのスクリプトで? sed -f hoge test なかんじ?
6 名前:4 mailto:sage [04/05/28 17:18.net] >>5 はい。 #!/usr/bin/sed -f { = N s/\n/: / s/^([0-9]: )/0\1/ } としてもうまく行かなくて悩んでいます。
7 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/28 17:22.net] 適材適所という言葉があるだろうに… % awk '{printf "%02d: %s\n", NR, $0}' test
8 名前:4 mailto:sage [04/05/28 17:30.net] 例えば aaa\ bbb\ ccc ddd\ eee の\が出てくると次の行と連結するスクリプトは #!/usr/bin/sed -f :cont /\\$/{ N s/\\\n// b cont } の様にすれば aaabbbccc dddeee のようにうまく出力されるのに、 #!/usr/bin/sed -f { = N s/\n/: / s/^([0-9]: )/0\1/ } みたいに、先頭に2桁の行番号と:を追加するのはなぜうまく出来ないのか 疑問に思ったのです。
9 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/28 18:46.net] ム板のawkスレの住人だな?
10 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/28 19:29.net] pc5.2ch.net/test/read.cgi/linux/1067815570/
11 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/29 02:07.net] 【貝】第1回シェル講座【殻】 pc5.2ch.net/test/read.cgi/unix/1016372780/ ☆シェルスクリプトを勉強するにあたって☆ pc5.2ch.net/test/read.cgi/unix/989659936/ ここらへんに合流すれば? そういう話題結構でてるよ これだけではなんなので。日本語で読める sed に関する文献としては 「MS-DOS を 256倍使うための本 Vol.3」が No.1 です。おすすめ
12 名前:名無しさん@お腹いっぱい。 mailto:sage [04/07/03 15:06.net] 古いけどそこそこ良くまとまったサイトを紹介してみよ。 ttp://www.gcd.org/sengoku/sedlec/
13 名前:名無しさん@お腹いっぱい。 [04/07/16 12:26.net] メールの中身で 添付ファイルのデータが開始するbase64という文字列があった後のデータ全部切り抜いて出力したいんですが sedで可能でしょうか?
14 名前:名無しさん@お腹いっぱい。 mailto:sage [04/07/16 15:22.net] >>13 www.gcd.org/sengoku/sedlec/12.txt
15 名前:名無しさん@お腹いっぱい。 [04/07/17 10:31.net] From: hoge hage <hoge@moe.com> ↑ これの < > の中に入ってるメールアドレスを、抜き出したいんですが、どうすればいいでしょうか?
16 名前:名無しさん@お腹いっぱい。 mailto:sage [04/07/17 11:48.net] sed 's/.*From.*<\(.*\)>.*/\1/' じゃダメ?
17 名前:15 [04/07/17 13:02.net] >16 ありがとうございます 後は加工して使おうと思います。
18 名前:名無しさん@お腹いっぱい。 [04/09/20 15:15:15.net] ど素人です。 sedでMIFESのグローバル置換みたいなことってできないですか? あるディレクトリに存在する複数のファイルをワイルドカード指定で入力して 一括して置換してもとのファイルにリダイレクトしてやるみたいな。 下記のイメージで(下記はとおらないですけど・・)。 sed -e 's/aaa/zzz/g' < * > * 1日中ぐぐってぐぐってもがいたけどわかりませんでした。すごいひと教えてください。
19 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/20 15:32:00.net] すごくなくてもできる。とりあえず、シェルスクリプトすれに池。 もっと短くできるが、何をやっているかわかりやすく説明するのをかねて↓ find -type f | while read file ; do mv ${file} ${file}.backup cat ${file}.backup | sed -e "s/aaa/zzz/g" > ${file} done
20 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/20 18:19:09.net] 次世代sed登場 ttp://news.tbs.co.jp/newseye/tbs_newseye1037945.html
21 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/20 20:54:22.net] >>19 おわっ。あっさりできたっ。どうもありがとです! シェルスクリプトすごい便利。勉強しなきゃですね・・。
22 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/22 03:09:12.net] bash上でなのですが、 hoge=`echo ../tmp/work.c | sed 's/\//\\\//g'` を実行しようとすると、 sed: -e expression #1, char 9: Unknown option to 's' となってしまうのは、なぜですか? /を\/に置換したいだけなのです。
23 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/22 03:29:24.net] >>22 sed 関係ないやん \ → \\
24 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/22 03:50:35.net] うーん、確かにシェル向けのネタなのかもですが、 echo ../tmp/work.c | sed 's/\//\\\//g' だけだと動くのがよくわからなくって。
25 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/22 04:32:21.net] いいことを教えてあげよう。 's@hoge@hage@g'とやってごらん。
26 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/22 05:02:27.net] command not found でした・・・って、そういう意味ではないのかな・・・。
27 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/22 10:45:33.net] s/..../..../g は s@....@....@g とも書ける という意味
28 名前:名無しさん mailto:sage [04/09/24 04:30:15.net] Filesystem Size Used Avail Use% Mounted on /dev/hda5 9.6G 844M 8.3G 10% / というのを ~$ df /home/ | sed -n -e "2s/.*\(\d*\)%.*/<\1>/p" として10を取り出したいのですがうまくいきません 結果は <> となります どうすればいいのでしょうか?
29 名前:名無しさん@お腹いっぱい。 [04/09/24 06:40:09.net] space, tab を区切りにして何番目の要素って選択したほうがいいんじゃないの。
30 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/24 06:43:14.net] 先頭の.* が % の直前までマッチし、 \d* が長さ0、 % が % にマッチ、 最後の .* が残りの部分にマッチしてるからね。
31 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/24 12:56:25.net] そもそも \d なんて使える sed あんの?
32 名前:名無しさん@お腹いっぱい。 mailto:sage [04/10/10 16:22:51.net] sedsedesedesedesed
33 名前:名無しさん@お腹いっぱい。 [04/10/10 17:50:46.net] sed(sede){3}sed
34 名前:名無しさん@お腹いっぱい。 [04/11/09 16:03:38.net] hosyu
35 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/09 21:45:42.net] しーずか〜な〜しーずかな〜 さーとのーあ〜きぃ〜 おーsed〜にきぃ〜のみが〜 お〜ちる〜よ〜は〜
36 名前:名無しさん@お腹いっぱい。 [04/11/23 17:09:03.net] www.chimimo.com/sed/
37 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/25 00:53:17.net] sedは日暮れて〜夕波小波〜
38 名前:BBQ mailto:vt100 [05/01/27 15:19:10 .net] temp.txt中の"-"と"+"以外の文字を空白に変換するには sed 's/[^\-\+]/ /g' temp.txt でうまくいきますが、temp.txt中の"-"と"+"と数字以外の文字を空白に変換するには どう記述すればよいのでしょうか sed 's/[^\-\+0-9]/ /g' temp.txt では文法エラーになってしまいます。
39 名前:BBQ mailto:vt100 [05/01/27 15:31:07 .net] >>38 +と−の順番が逆でした。 以下に訂正。 temp.txt中の"-"と"+"以外の文字を空白に変換するには sed 's/[^\+\-]/ /g' temp.txt でうまくいきますが、temp.txt中の"-"と"+"と数字以外の文字を空白に変換するには どう記述すればよいのでしょうか sed 's/[^\+\-0-9]/ /g' temp.txt では文法エラーになってしまいます。
40 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/27 15:31:45 .net] うちの OS だと、ならんけど? まあ sed 's/[^-+0-9]/ /g' temp.txt って書いた方が簡潔だとは思うが。
41 名前:BBQ mailto:vt100 [05/01/27 15:55:36 .net] >>40 > うちの OS だと、ならんけど? > まあ > sed 's/[^-+0-9]/ /g' temp.txt > って書いた方が簡潔だとは思うが。 Cygwin についてくるsed です。 sed 's/[^-+0-9]/ /g' temp.txt これは問題なく正常動作しました。
42 名前:名無しさん@お腹いっぱい。 [05/01/27 21:55:24 .net] >>41 > > >>40 > > うちの OS だと、ならんけど? > > まあ > > sed 's/[^-+0-9]/ /g' temp.txt > > って書いた方が簡潔だとは思うが。 > > > Cygwin についてくるsed です。 > > sed 's/[^-+0-9]/ /g' temp.txt > > これは問題なく正常動作しました。 > > sed 's/[^+-0-9]/ /g' temp.txt にするとだめです。 +と0の間にあるコードと解釈されるらしい。
43 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/27 22:13:09 .net] >>42 > sed 's/[^+-0-9]/ /g' temp.txt にするとだめです。 仕様です. www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=re_format&dir=jpman-5.2.0%2Fman§=0
44 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/27 22:15:19 .net] すまん url 化けてた. www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=re_format&dir=jpman-5.2.0%2Fman§=0
45 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/28 13:57:06 .net] なんでperl使わないの?
46 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/28 17:44:42 .net] >>45 どうやって、perl おぼえた?
47 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/28 18:02:57 .net] なんでperl使うの?
48 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/28 18:10:23 .net] らくだ本に一万円投資しちゃったからとか。
49 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/28 18:15:54 .net] どうやって perl インストールしたの?
50 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/30 00:56:27 .net] インストールできなかったの?
51 名前:名無しさん@お腹いっぱい。 [2005/03/24(木) 05:43:55 .net] FreeBSD の sed って c コマンドの後のコマンドも実行するね。 これってバグじゃね?
52 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/24(木) 09:44:49 .net] >>51 意味不明.
53 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/26(土) 16:20:20 .net] perlは、難しいので sed & awkでやって逝く事にしました。
54 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/26(土) 17:23:11 .net] 適材適所ってこともあるんだよもん。
55 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/29(火) 16:37:56 .net] 若者は、PERLを消化して部位部位いわせsed&AWK何それ?状態 案外、sed&AWKを学ぶ必要がなかったりする? 新しいのについて行けずに、たちどまってしまったオッサンは、sed&AWK せめてPERLぐらいやる。だだでえくいっぱぐれてるのに 両方の言語を使用したことのあるエキスパートに意見を伺いたい sed&AWKなら簡単にできてPERLなら難しい処理例 PERLなら簡単にできてsed&AWKなら難しい処理例 若者、おっさんに向けての指針等など
56 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/29(火) 21:20:02 .net] sed 's/hoge/hage/' のほうが perl -pe 's/hoge/hage/' より短い。
57 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/29(火) 22:01:24 .net] ぐれてないでまず日本語を学ぶ >だだでえくいっぱ
58 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/30(水) 12:32:32 .net] 大岡山のキティに英語の勉強しろといわれたので、伊藤和夫先生のテキストで勉強しました -xx-xx-xxなperlは、使用しない故スティーブンス先生にも意見を聞きたいので >>59 召還ヨロシク
59 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/30(水) 14:06:53 .net] >>58 は浪人生
60 名前:名無しさん@お腹おっぱい。 mailto:sage [2005/04/21(木) 22:37:43 .net] sed 's/い/お/g' file で、 file内の「いっぱい」が「おっぱい」に置換されるのは、 正 常 !
61 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/04/21(木) 23:05:31 .net] s/い/お/g ←「g」付きだと置換結果は「おっぱお」じゃないの?
62 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/09(月) 16:07:16 .net] 質問です。bashにてGnu sed ver4.0.9を用いて echo hoge,uge,hage,age,sage | sed 's/uge,.*\?,//g' を実行しました。 hoge,age,sage が出力されることを期待したのですが、実際の出力は hoge,sage でした。 *や+の後に?を指定すると、例えばperl,pythonなんかでは *や+は non greedy となるので、 sedでもそうなるものと考えてたのですが、何か間違っていたのでしょうか。 また、*や+を non greedy とするにはどうすれば良いのでしょうか。 よろしくお願いします。
63 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/09(月) 16:38:04 .net] >>62 man sed しました? man sed の SEE ALSO 見ると、 GNU sed が regex(7) (POSIX 1003.2) に (大体) 準拠してるとあると思いますが、 POSIX 1003.2 に non greedy な量指定子は無いです。 何か他の方法をとる必要があるかと。
64 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/09(月) 17:17:44 .net] ありがとうございます、とりあえず>62に関しては 's/uge,[^,]*,//' とすることにします。
65 名前:名無しさん@お腹いっぱい。 [2005/05/10(火) 18:46:02 .net] abc xyzをaxbyczにしたいのですが
66 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/10(火) 19:18:22 .net] >>58 > 大岡山のキティに英語の勉強しろといわれたので、伊藤和夫先生のテキストで勉強しました だれ?
67 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/10(火) 20:56:07 .net] sed 's/abc xyz/axbycz/'
68 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/18(水) 10:04:29 .net] >>65 echo abc xyz |sed -e "s/^/%/; :ll; s/[%]\(.\)\(.*\) \(.\)\(.*\)/\1\3%\2 \4/; tll; s/%//;"
69 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/18(水) 17:29:04 .net] >>66 >だれ? は、 >大岡山のキティ >伊藤和夫 の以上2つのうち誰の素性を知りたいのだね?
70 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/18(水) 19:10:25 .net] 68は「大岡山のキティ」本人で複数の人間に「英語の勉強しろ」と言っていた、 という可能性は無いの。
71 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/20(金) 15:37:59 .net] >>70 「大岡山のキティ」に心当たりがあるなら>>66 のためにも、sedのsコマンドで「大岡山のキティ」を痴漢するってのは如何
72 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/27(金) 13:57:14 .net] GNU sedのVersion 4で、マルチバイトパッチをあてたVsersion 3みたく文字コー ドを決めうちして変換する(ctype=EUCみたいに)方法はないのでしょうか。 jiskan16.bdfに外字を足してテキスト処理をやっているのですが、行頭に外字の コードがくると、Version 4.1.4では誤認識してしまうのをなんとかしたいのです が。
73 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/27(金) 18:46:29 .net] grepもUTF-8使えるようになって欲すい。
74 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/27(金) 19:03:08 .net] FreeBSDでutf-8なロケールでgrep使えばOK。
75 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/28(土) 20:35:52 .net] sedで四則演算系は作れますか? 理由も教えてください。
76 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/28(土) 22:09:07 .net] 宿題は自分で。
77 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/29(日) 00:01:58 .net] >>72 bashを使っているとして、LANG=ja_jp.eucJP sed -e "s/hogehoge/fugaguga/" みたいなのじゃダメなの?
78 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/29(日) 07:50:40 .net] >>76 分からないのならレスすんな。
79 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/29(日) 08:47:11 .net] 煽っても無駄ですよ。宿題は自分で。
80 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/29(日) 08:48:54 .net] 75に答えているので78はレスしないでください。
81 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/29(日) 13:38:42 .net] >>77 情報小出しですみません。LNAGは設定してます。 ググってもsedの古いソースがみつからなかったので、とりあえずは、Vine2.6 の3.0.2 (だかなんだかの)のバイナリを入れて動かしてますんで、当面は困っ てはいないのですが、システムのバージョン上げるときに、個別対応する項目 が増えるのは面倒だなと思って質問した次第です。
82 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/30(月) 01:02:38 .net] >>81 GNU sedは4.xでマルチバイト文字対応が別の形で入ってるからね。 3.Xのローカライズパッチではそれほど厳密には検査されなかった 文字範囲が厳しくなってる可能性がある。 内部的には wide character に変換してごにょごにょしてるんだけど、 外字だとここでひっかかるのかもね。最悪自分でソースに手を入れて wrapper関数書くしかないかも(外字をPUAにわりあてちゃうとか)。
83 名前:名無しさん@お腹いっぱい。 [2005/05/31(火) 23:18:23 .net] >>81 > ググってもsedの古いソースがみつからなかったので、 Ring server にあらかたのバージョンあったよ。 もちろん日本語対応パッチはそこにはないんだけど (これはほかを探せばある)。
84 名前:名無しさん@お腹いっぱい。 [2005/06/10(金) 22:45:51 .net] > pc8.2ch.net/test/read.cgi/unix/1113664637/298 Nで次の行もパターンスペースに読み込んでいた場合に、 d と D の違いが出る。
85 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/10(金) 22:56:05 .net] >>84 ありがとう
86 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/10(金) 23:23:16 .net] >>84 ,85 Nに加えて、sなどで意図的にパターンスペースに改行を入れることもあるよ。 Nを行の先読みに例えれば、後者は行の差込み挿入のような意図で行うんだけど。 その場合にもdとDの違いが出る。
87 名前:名無しさん@お腹いっぱい。 [2005/07/15(金) 08:19:58 .net] 半角かなをsedで一括置換しようと 下のようなスクリプトを試しましたが うまくいきません 解決策を教えてください s/タ/\\={a}/g s/ツ/\\={\\i}/g s/ト/\\={u}/g s/ニ/\\uc{r}/g s/ヌ/\\uc{\\={r}}/g s/ハ/\\uc{l}/g s/゙/\\d{h}/g s/ワ/\\d{m}/g s/フ/\\.{n}/g s/ホ/\\~n/g OSはwindowsXPですが sedはunix由来だからここで伺ってます すみません
88 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/07/15(金) 11:53:16 .net] >>87 nkf じゃだめなん?
89 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/07/15(金) 12:15:30 .net] >>87 UNIX上のsedなら、それでちゃんと動作するよ。
90 名前:87 [2005/07/15(金) 13:03:54 .net] >>88 すみません、nkfで上記の置換を行う方法がわかりません よければ教えてください >>89 可能であれば、windowsで動作した方がいろいろと好都合 ですので...
91 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/07/15(金) 13:21:49 .net] >>90 UNIX上のsedでは動作 ↓ sedの文法はそれで間違ってない ↓ Win版のsedのバグまたは仕様 ↓ UNIX板でこれ以上聞いても無駄
92 名前:87 [2005/07/15(金) 13:23:40 .net] 88、89さん申し訳ありません wiodows上でのsedでも87のsed置換は可能です 私の勘違いでした 改めて質問させていただきます 設定済みmeadowを使って リージョンを設定して M+shift+|で87のsedスクリプトを走らせた場合 \になってほしい部分が化けてしまいます 原因や対処方法がおわかりに方がいらっしゃったら ご教示願えませんでしょうか?
93 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/07/15(金) 13:28:00 .net] set-process-coding-system
94 名前:87 [2005/07/15(金) 13:52:19 .net] >>93 ヒントありがとうございます 上述したように リージョンにコマンドを渡す方法を使う場合 set-process-coding-systemの記述は どこに、こんな風に記述すればよろしいのでしょうか? 頭が悪いので設定方法がわかりません よろしければ教えてください
95 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/07/15(金) 14:31:39 .net] >>94 ずっと効くから.emacs に書いとけ。
96 名前:名無しさん@お腹いっぱい。 [2005/07/17(日) 00:37:09 .net] >>92 半角かなばっかりの文書を置換するのはできるみたいですが 漢字が混じってたら漢字は化けます 対処方法がありますか?
97 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/07/17(日) 04:56:30 .net] >>96 > 対処方法がありますか? おまえ朝鮮人のにおいがぷんぷんするんだが。 やっぱり朝鮮人だったか。おねがいだから、国に帰ってくれ。
98 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/08/02(火) 11:01:13 .net] sed /^$/q が「最初の空行までを出力する」ということで、メールのファイルからヘッダ部分を 抜き出すのに使えることがわかったのですが、その逆「最初の空行から後を出力 する」のはどうするのがよいでしょうか? 「sed ではなく○○を使え」とかいうことになるのかもしれませんが……
99 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/08/02(火) 11:42:31 .net] sed '1,/^$/d'
100 名前:98 mailto:sage [2005/08/03(水) 00:43:23 .net] >99 なるほど。「最初から空行までを削除する」と読むわけですか。 98の「空行が見つかったら終了する」も奥が深いと思ったのですが、まだまだ精進が 足りませんね。ありがとうございました。
101 名前:名無しさん@お腹いっぱい。 [2005/08/30(火) 15:38:56 .net] age
102 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/08/31(水) 16:15:27 .net] 1行野郎どっさり www.student.northpark.edu/pemente/sed/sed1line52.txt
103 名前:名無しさん@お腹いっぱい。 [2005/10/12(水) 15:14:18 .net] $ cat hoge.txt A\textrm{1}\textrm{23}\textit{456}B A\textrm{1}\textit{23}\textrm{456}B のようなファイルがあるとして \textrm{}を取り除いて A123\textit{456}B A1\textit{23}456B を取り出したいと思い $ < hoge.txt sed 's/\\textrm{\(.*\)}/\1/g' と書きましたが,括弧の対応を外側から取るようで A1}\textrm{23}\textit{456B A1}\textit{23}\textrm{456B と出力されてしまいます. うまい方法はありませんか?
104 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/12(水) 15:44:31 .net] {\(.*\)}の部分が最長マッチしちゃんだから、ここのマッチが}で切れるよう {\([^}]*\)}に変えればいい。
105 名前:103 mailto:sage [2005/10/12(水) 15:47:46 .net] >>104 なるほど! どうもありがとうございます.
106 名前:名無しさん@お腹いっぱい。 [2005/11/24(木) 20:57:48 .net] コマンドラインオプションの -n がよく理解できないんですが、どういう場面で使えばいいんでしょうか
107 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/24(木) 21:06:03 .net] matchしたところだけくださいってな場面
108 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/24(木) 21:44:39 .net] sedを「セド」と呼ぶぽ
109 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/25(金) 01:55:29 .net] 設定ファイルのコメントを除くときとか
110 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/06(金) 04:53:17 .net] sedってホールドスペースは1個しか使えないの?
111 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/06(金) 06:52:12 .net] >>110 yes
112 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/06(金) 08:45:14 .net] >>111 否定疑問文だから、英語で答えるなら "No" が正解だろ。
113 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/06(金) 10:24:18 .net] >>110 はい。
114 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/06(金) 10:37:46 .net] >>111-113 Thank you all. 知恵と勇気と愛でなんとかしてみる
115 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/06(金) 18:30:00 .net] 否定疑問文に 「んなことない」みたいな答え方はどうしたらいい?
116 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/06(金) 18:35:30 .net] >>115 ■スレッド立てるまでもない質問スレッド Part112◆ academy4.2ch.net/test/read.cgi/english/1136133816/
117 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/06(金) 18:42:23 .net] 112は最近英語を知った厨房にすぎない
118 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/06(金) 19:12:12 .net] >>115 Yes. と答えればいいだけ。
119 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/06(金) 19:39:41 .net] >>115 「んなことない」= "There is no such Japanese zither."
120 名前:名無しさん@お腹いっぱい。 [2006/02/08(水) 18:38:37 .net] @
121 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/02/08(水) 19:42:26 .net] ウナコーワ足んない
122 名前:名無しさん@お腹いっぱい。 [2006/04/12(水) 02:41:13 .net] 深夜上げ
123 名前:名無しさん@お腹いっぱい。 [2006/08/22(火) 16:18:15 .net] ウムムム
124 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/11/03(金) 09:37:20 .net] 同じ文字が3文字連続していたら表示したいのだが
125 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/11/04(土) 02:04:43 .net] >>124 pc8.2ch.net/test/read.cgi/unix/1039165754/600
126 名前:名無しさん@お腹いっぱい。 mailto:age [2006/11/14(火) 20:28:59 .net] grep, sed, awk www.shuwasystem.co.jp/books/wwwsrch/cgi-bin/content/794/index.htm この本ってどうですか? 単なるマニュアル以上の情報は載ってる?
127 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/11/14(火) 20:59:20 .net] このシリーズはなんとなく印象が悪いので手にとってないな。そういえば。
128 名前:名無しさん@お腹いっぱい。 [2006/11/18(土) 10:13:03 .net] 教えてください。 awk,sed,シェルを使い、カンマ区切りのファイルの1カラム目と2カラム目をキーに、 あるファイルに含まれる行を削除するにはどうすればよいのでしょうか? 例) --aaa.csv-- 111,222,333,444 555,666,777,888 999,000,111,222 --file1.txt-- 111222 555666 の場合、aaa.csvより下記行のみほしい。 999,000,111,222 ご存知でしたら、ご教授ください。 よろしくお願いします。
129 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/11/18(土) 11:48:03 .net] >>128 sed 's/\(...\)\(...\)/^\1,\2/' file1.txt | egrep -f- -v aaa.csv
130 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/11/18(土) 12:30:05 .net] >>129 突っ込みだけでスマン。それだと、 111,222999999999,333,444 なんていうのがaaa.csvにあると、これも削除されるぞ。 数字の桁数が自由か固定かあいまいな>>128 がいけないんだが、 sedの置換先は /^\1,\2,/ みたいなんの方が安全と思う。
131 名前:名無しさん@お腹いっぱい。 [2006/11/18(土) 20:48:36 .net] >>129-130 さんありがとうございました。 大変、参考になります。 私の説明がいけなかったのですが、 aaa.csvの1カラム目と2カラム目は固定ではなく、自由です。 ですので、 --aaa.csv-- 11111,2222,333,444 55,666666,777,888 のような場合もあるのです。 また、file1.txtのほうも固定ではなく、 --file1.txt-- 1111111222 555666 2233333 とスペースが入っている場合すらあります。 度々で恐縮ですが、 ご存知でしたら、ご教授ください。 よろしくお願いします。
132 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/11/18(土) 23:16:33 .net] >>131 仕事で必要ならコンサルタントを雇いなさい。
133 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/11/19(日) 01:09:53 .net] perl かなんかで書いちゃった方が早いよ。
134 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/11/19(日) 07:09:03 .net] sed,awk=perlかなんか
135 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/11/28(火) 22:11:41 .net] 職場のマシン、perlが入ってなかった・・・ orz
136 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/11/28(火) 22:52:45 .net] この場合は、sedよりawkなんかな? awkで書いてスピードアップのためのawkccしてしまうとか。
137 名前:名無しさん@お腹いっぱい。 [2006/12/07(木) 00:21:57 .net] ご存知でしたら、教えてください。 Solarisのawkで、変数に対しての比較に正規表現が使えないのですが、 よい方法をご存知の方がいましたら、教えて下さい。 nawkなら、上手くいくのですが、awkでは無理なのでしょうか? また、Linuxのawkなら、上手くいきました。 よろしくお願いします。 例)下記の場合、./test.shを実行すると、test.awkの正規表現を使用している部分[if ( $7 ~ HENSU )] でエラーになってしまいます。 --------------------test.shの中身-------------------- #!/bin/sh HENSU="3A" cat testdt.txt | \ awk -f test.awk HENSU=${HENSU} exit 0 ----------------------------------------------------- --------------------testdt.txtの中身-------------------- aaaaabbbbcccdddeeeeeffffffgg3Aggggghhhhhhhiiiii ----------------------------------------------------- --------------------test.awkの中身-------------------- BEGIN{ FS="\t" } { if ( $7 ~ HENSU ) { print $0 } } -----------------------------------------------------
138 名前:名無しさん@お腹いっぱい。 [2006/12/07(木) 20:54:41 .net] >>137 awk -f test.awk -v HENSU=${HENSU} じゃね? 確認はできんが
139 名前:名無しさん@お腹いっぱい。 [2007/02/04(日) 08:46:50 .net] ある文字列を 現在時間+引数 に置換したいのですが、どのようにすればいいですか? perlを使えば簡単なんだけど、職場のマシンでperl が入ってなかった(汗) ちなみに、sed とawk は使えるみたいです。
140 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/02/06(火) 00:47:03 .net] >>139 引数によるけど、dateコマンドが使えてたら、OKでは。 $ date +%R 00:45 $ date --date '6 min ago' +%R 00:39 という感じで引数を与えるといけると思う
141 名前:名無しさん@お腹いっぱい。 [2007/02/11(日) 21:34:20 .net] 入力ファイルを書き換えることはできる? % sed 's/ABC/abc/' input.txt > output.txt よくある上のようなプログラム(と呼ぶのかな?)で、 出力をoutput.txt じゃなくてinput.txt のファイル自身を書き換えたいんだけど、可能かな? つまり、余計なファイルは出力させたくないんだよ。
142 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/02/11(日) 21:46:12 .net] >>141 a.in-place オプションが使えるバージョンのsedを使う b.inplaceというコマンドをつかってみる c. (rm hoge.dat; sed 's/aaa/bbb/' > hoge.dat) < hoge.dat あるいは pc10.2ch.net/test/read.cgi/unix/1157601611/708-727 あたりを参照
143 名前:141 [2007/02/11(日) 21:57:51 .net] >>142 情報サンクス a. の方法を用いました
144 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/02/11(日) 22:27:47 .net] 問題解決したようだけどこぴぺして編集 ・-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 オプションは無い。 OpenBSDの(ry MacOSX の 標準 sed は FreeBSD 由来なので元になるバージョンに依存する。 MacOSX 10.3以降は FreeBSD 5.1R由来なので、 -iオプションはある。 以前のGNU sed には in-place editing 機能はない (Changelog によると 2001-09-25 ) (3.02には in place オプションは無い)
145 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/02/11(日) 23:12:50 .net] >>144 まとめ乙
146 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/02/26(月) 05:04:17 .net] あってもなくてもいい追加 HP-UX 11i Version 2: September 2004 docs.hp.com/ja/B2355-90851/sed.1.html AIX 5L Version 5.2 inetsd01.boulder.ibm.com/doc_link/en_US/a_doc_lib/cmds/aixcmds5/sed.htm SunOS 5.10 docs.sun.com/app/docs/doc/819-1210/6n3j74jsr?q=sed&a=view いづれも 標準 sed に -i オプションは無い
147 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/02/27(火) 15:18:51 .net] irix techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650&db=man&fname=/usr/share/catman/u_man/cat1/sed.z&srch=sed
148 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/16(月) 23:15:15 .net] 仕事で root してる人に質問です。 皆さんどれぐらい仕事で sed スクリプト書いてます? スクリプトの後々のメンテナンスと、既に周囲に読める人があまり 居ないこととを考えると、s での置換以外では perl を使うか、そ うなったらもう全部 perl にした方がいいのかなと最近思ったりし ます。 6行の sed スクリプトを書いたのですが、コメントが 8 行になっ てしまって。。。
149 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/17(火) 00:51:04 .net] sedで複数行書くのは犯罪だ。awkで書こう
150 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/17(火) 00:55:39 .net] そんなん読めないやつに管理まかせちゃいかんよ。
151 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/18(水) 23:42:12 .net] >>148 すぐに読めなくても、それがsedのスクリプトであることを書いておけば、 perlを使えるひとならちょっとの手間で読めるようになるでしょ。 そうでなければ>>150 ということに。 それから、6行のスクリプトのコメントが8行になっても、それはそれでいいじゃないか。
152 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/19(木) 01:05:48 .net] sedの複数行は本当に頭痛がしてくる。 perでlさえ可読性悪いと言われてるのにその比じゃない。 個人的趣味以外で書いてはいけない
153 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/21(土) 01:38:29 .net] sed のコードのそばに、 それを perl なり awk なりで書いたものを コメントとして残せば ・可読性→クリア ・コメント行数→クリア ・メンテ→工数倍w
154 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/21(土) 03:10:13 .net] s2pでいいじゃん、とかおもったりおもわなかったり
155 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/08(火) 00:15:31 .net] sedで千行あるファイルの 100行目から150行目を 抜き出すには どうしたらいいですか
156 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/08(火) 00:17:32 .net] sed -ne "100,150p"
157 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/08(火) 11:04:38 .net] sed -n 100,150p
158 名前:名無しさん@お腹いっぱい。 [2007/06/04(月) 20:43:16 .net] 単語の置換をしたいんだけど、どうしたらよいでしょうか 具体的な例で言うと、あるソース中の int を char に全置換したい んだけど 単純に sed "s/int/char/g" だと printf まで変わって しまうから それは避けたい。 「単語」の条件は 英数字+アンダースコア (\w+) であること。 これ絶対FAQだと思うんだけど、 「sed 単語 置換」 で検索しても 答にたどり着かなかったのですよ。 困った。
159 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/04(月) 21:26:42 .net] perl -pe 's/\bint\b/char/'
160 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/04(月) 21:37:31 .net] >>159 アフォか 正解: sed 's/\<int\>/char/g'
161 名前:158 mailto:sage [2007/06/04(月) 22:15:45 .net] >>159 ありがとうございました! うまくいけました。
162 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/04(月) 22:20:07 .net] \< \>で思い出したけど、HP-UXのgrepではこれ使えんのだよな。 同じregexpライブラリを使っているなら、sedでも使えんな。
163 名前:159 mailto:sage [2007/06/04(月) 23:51:11 .net] スレタイ読まずに書き込んで感謝されちゃったよ こういうのを いたたまれない気持ち っていうのかな
164 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/01(日) 11:49:33 .net] 1 2 3 4 というtemp.txtをsed N temp.txtとすると 1 2 3 4 になるのはわかるのですがsed n temp.txtにすると 2 3 4 にならないのはどうしてですか 夜も眠れません
165 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/03(火) 10:30:14 .net] sed -e N -e 's/^/X/' -e 's/$/x/' sed -e n -e 's/^/X/' -e 's/$/x/'
166 名前:名無しさん@お腹いっぱい。 [2007/07/03(火) 18:48:39 .net] 下記のように、置換する文字に変数って使えないんでしょうか? 設定ファイル100個飛ばしてしまったorz forでループして、一気に変えたいんですが、$mlとそのまま置換されて しまいます。このままだと、全部手がきです(T.T) どなたかお助け下さい。 ml=hoge sed 's/$ml/foo/'
167 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/03(火) 18:51:10 .net] >>166 それはsedじゃなくて、シェルスクリプト側の話だね。 ' ' じゃなくて " " を使う。 sed "s/$ml/foo/"
168 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/03(火) 19:17:43 .net] そしてmlが"/"を含んでいて破滅する。
169 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/03(火) 19:30:17 .net] ↑ できました!(T.T) ありがとうございました。一時は徹夜を覚悟しました。 本当に助かりました。ありがとう!
170 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/09(月) 22:52:03 .net] >>168 まさにそれ。 やりたいのは、特定の文字列を 現在のディレクトリ位置に置換したいということなんですが、 シェルスクリプトで sed s/hoge/$PWD/g < file1.txt > file2.txt と書くと、エラーになってしまいます。 ($PWDが/を含んでいるから) だれかうまいやり方わかりませんか?
171 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/09(月) 22:54:37 .net] sed "s|hoge|$PWD|g" < file1.txt > file2.txt
172 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/09(月) 23:43:40 .net] >>171 はやっ!ありがとー! でもごめんなさい、実は明後日まで試せる環境がないので、 また試せたら報告に来ます。
173 名前:名無しさん@お腹いっぱい。 [2007/07/12(木) 20:37:34 .net] sedでラベルを1行スクリプトに組み込むのは無理ですか? sed '/^$/!{N;};/^$/{s/\n //g;} Nが終わったあとにスクリプトの最初に戻したいのですが美味くいきません・・・
174 名前:名無しさん@お腹いっぱい。 [2007/07/12(木) 21:01:50 .net] 【参院選】民主党から、在日コリアンの期待背負った金氏(民団幹部)が立候補…在日参政権訴え news22.2ch.net/test/read.cgi/newsplus/1184227903/l50
175 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/12(木) 21:55:25 .net] >>173 普通にできるけど。:label; hoge; b label みたいに。
176 名前:170 mailto:sage [2007/07/12(木) 23:18:53 .net] 報告おくれましたが、無事できました。 本当にどうもありがとう!
177 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/14(土) 03:55:18 .net] >>173 -e >>175 普通じゃない
178 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/14(土) 09:07:49 .net] >>177 >>173 の質問読み直せ。-e で連結する話とは違うぞ。 >>175 が正解。たぶん、>>173 はラベルの後のセミコロン忘れてできなかったんだろう。
179 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/14(土) 09:12:01 .net] 省略せずに結果を書くと、 sed ':label;/^$/!{N;};b label;/^$/{s/\n //g;}' ↑な。これで何をやりたいかは知らんが。
180 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/14(土) 13:40:28 .net] >>178 ラベルの後に続けて書けるのはGNU含む一部のsedのみ。 だから普通じゃない。 普通はラベルごとに切って -e で繋ぐ。 sed -e ':label' -e '/^$/!{N;};b label' -e '/^$/{s/\n //g;}'
181 名前:名無しさん@お腹いっぱい。 [2007/07/19(木) 11:31:07 .net] タブ文字(0x09)だけをカンマに置換する方法はありますか? バージョンはGNU sed の 3.02です。
182 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/19(木) 11:46:36 .net] 普通に sed 's/\t/,/g'
183 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/19(木) 12:11:34 .net] >>182 3.02は\tを使えません
184 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/19(木) 12:14:25 .net] >>181 普通にタブ文字を入れる。
185 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/19(木) 12:16:24 .net] 普通に sed 's/ /,/g' タブのところは、シェル上なら Ctrl-Vに続けて入力。 シングルクォート必須。 なお、上の sed をコピペしても、TABが表示上で変換されてるので動かないと思う。
186 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/19(木) 13:25:58 .net] >>184 T=`echo -ne "\t"` sed -e "s/$T/,/g" で出来ました。 ありがとうございました。
187 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/19(木) 13:31:46 .net] >>186 そんなことしなくても、普通に >>185 でできるわけだが、、 何をわざわざ大変なことしてるだよww
188 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/19(木) 13:35:52 .net] >>185 では動きませんでした。よく知りもせず、確認もせずに回答しないでください。
189 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/19(木) 13:41:02 .net] >>187 あとで自分のシェルプログラムを読むときに 見えないタブコードのままだと誤解をしそうだし Ctrl-Vという入力方式が使えない端末もあるので あえて大層に書きました。
190 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/20(金) 15:25:43 .net] 改行がCRLFをLFにするには、 sed -e 's/\r//' < target > out や sed -e 's/^M//' < target > out で出来るんだけど、逆にLFをCRLFにするにはどーしたら良いですか? sed -e 's/\r\n/\n/' sed -e 's/^M^J/\n/' sed -e 's/^M\^J/\n/' いずれもだめでした。 sedは GNU sed 4.1.5版 です。
191 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/20(金) 16:06:36 .net] >>190 普通に sed 's/$/\r/'
192 名前:190 mailto:sage [2007/07/20(金) 18:19:11 .net] 出来ました。
193 名前:名無しさん@お腹いっぱい。 [2007/07/21(土) 00:53:54 .net] おお、ちょうどいい!もれも似たようなことで CR/LFを<BR>にしたかったw dクスでつ190-191
194 名前:名無しさん@お腹いっぱい。 mailto:sega [2007/08/08(水) 19:34:32 .net] 正規表現にマッチした文字列だけを出力したい というとき たとえば文字列の前の方の数字だけ取り出すときは sed -n "s/^\s*\([0-9]*\).*$/\1/p" みたいに 正規表現にマッチした全体をマッチした部分で置換する ようにやってたのですが、いちいち置換するのは 格好悪いので 部分\1だけ出力するような格好いい書き方ありませんか?
195 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/09(木) 00:53:55 .net] perl -nle 'print $1 if /\b(\d+)/'
196 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/09(木) 03:14:20 .net] >>194 GNU grep の -o オプションを使う。 ほかの grep だったらごめんなさいw
197 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/09(木) 13:19:08 .net] sedスレのつもりだったんだけど、まあいいや。ありがとん。
198 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/16(木) 23:03:21 .net] あるテキストファイルの1行目〜最終行の1000行前までを 取り出したいのですが、どのようにすればよいでしょうか? (ちょうど tail -n 1000 tmp.txt で取り出せない部分を 簡単に得たいのですが)
199 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/16(木) 23:07:04 .net] awk '{a[NR]=$0}NR>20{print a[NR-1000]}'
200 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/16(木) 23:08:31 .net] まちがえた。 sedでやっても美しくならないから、awkで awk '{a[NR]=$0}NR>1000{print a[NR-1000]}'
201 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/17(金) 08:48:47 .net] sed -n '1h;1!H;1001,${g;P;s/[^\n]*\n//;h}'
202 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/17(金) 12:49:09 .net] sedでやらなきゃいかんの?
203 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/17(金) 13:44:34 .net] >>202 sedスレなので
204 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/17(金) 14:06:45 .net] なんでsedスレを選んだんだろ。
205 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/17(金) 15:15:15 .net] そこにsedがあるから
206 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/17(金) 21:24:35 .net] >>200 >>201 レスありがとうございました。大変助かりました。 今回はawkを使おうと思いますm(__)m >>202 すみません、sedを覚えたての初心者なもので・・・
207 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/21(火) 03:25:33 .net] sed -n ':b;1001,${P;N;D};N;bb' 詰め
208 名前:名無しさん@お腹いっぱい。 [2007/09/06(木) 11:55:22 .net] 下のような行があったとして command, --いろいろなコメント command, だけ残して、--いろいろなコメント(--から後ろ)を全部削除 したいのですがどうすれば良いんでしょうか? 本を読んでもよくわかりません。どうかお助け下さい。
209 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/06(木) 12:02:37 .net] sed 's/--.*//'
210 名前:208 mailto:sage [2007/09/06(木) 12:05:26 .net] 消えました! ありがとうございました!>>209 ほんと助かりましたです。
211 名前:名無しさん@お腹いっぱい。 [2007/09/06(木) 13:04:52 .net] 質問ばかりで恐縮なのですが、もうひとつ質問があります。 line...$ な行があったとして、^line を見つけた時に、下のようにおしりに HOGEな文字列を追加したい場合はどうすれば良いのでしょうか? line... HOGE$ ほんと、勉強不足で申しわけありません。オライリー本を片手にやってる のですが、どうしてもわかりません。
212 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/06(木) 13:12:43 .net] >>211 sed '/^line/s/\$$/ HOGE$/' address について調べれ。
213 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/06(木) 13:31:20 .net] >>211 の $ は文字じゃなくて、正規表現の $ の意味ではないのかと
214 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/06(木) 14:15:56 .net] >>212-213 ありがとうございました。 sed '/^line/s/$/ HOGE/' でうまくいきました。addressについても勉強してみます!
215 名前:名無しさん@お腹いっぱい。 [2007/10/07(日) 16:15:05 .net] 仮ファイルを使わずに 入力ファイル自身を書き換えることは出来ますか?
216 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/10/07(日) 16:58:58 .net] -i
217 名前:名無しさん@お腹いっぱい。 mailto:sega [2007/10/11(木) 01:21:12 .net] //exec($command,$arg); とコメントアウトされた行をアンコメントしたいんだけど sed 's/\/\/(exec\(\$command,\$arg\);)/\\1/' -i hoge.php とかやっても思ったとおりに置換されない (とか$とか/とかをうまくエスケープできてないだけなのか どうなのかがよくわかんないんだけど、どこが間違ってる?
218 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/10/11(木) 01:30:55 .net] sed -e 's@//\(exec(\$command,\$arg);\)@\1@'
219 名前:名無しさん@お腹いっぱい。 [2007/11/11(日) 11:05:40 .net] 教えて下さい。 例 12345kkk6789 23456kkk4321 32456kkk9876 のようなテキストファイルが複数あり、 各行のkkk以降(kkkも含めて)を削除したいです。 1日考えてダメだったので、だれかお助け願います。
220 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/11(日) 11:11:26 .net] sed -e 's/kkk.*//'
221 名前:名無しさん@お腹いっぱい。 [2007/11/11(日) 13:48:54 .net] ありがとうございます。
222 名前:名無しさん@お腹いっぱい。 [2007/12/19(水) 03:19:13 .net] sed -e '500,$d' の500の部分を変数にすることって出来ますか? 例えば、sed -e '$no,$d' みたいな感じで実行するとエラーになって困ってます。
223 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 03:39:03 .net] >>222 シングルクォートをダブルクォートに変えてみな。
224 名前:222 mailto:sage [2007/12/19(水) 03:55:03 .net] >>223 どうもです。 sed -e "$no,$d"という風に変更してみましたがダメでした… そもそも変数を指定することが出来ないというオチなのでしょうか?
225 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 04:23:23 .net] >>224 あ、>>222 をちゃんと見てなかった。 $d は変数じゃなくて行末とデリートか。 なら、後ろの $ はエスケープが要るな。 sed -e "$no,\$d" > そもそも変数を指定することが出来ないというオチなのでしょうか? sed 自身が変数を解釈しているわけではない。 この場合は sed に引数を渡すシェルが処理をしている。 bash を例にとって説明すると >>222 の形式では シングルクォートの中身は展開されずに そのままの文字列が sed に渡される。 ダブルクォートにすると中身を展開するので $no と $d を変数と解釈して設定された値に 入れ替わったものが sed に渡される。 この辺の挙動をちゃんと知りたいのならおまいさんが 使っているシェルの man を読め。
226 名前:222 mailto:sage [2007/12/19(水) 04:41:38 .net] >>225 エスケープしたら一発で成功しました! 225さんの説明を読んで、また一つ理解が深まりました。 どうもありがとうございました!
227 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 07:23:30 .net] >>215 >>144
228 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 13:56:00 .net] sedの置換について質問 (GNU sed 4.x) タブ(\t)は置換できるのですが改行(\n)が置換できません。 例えば # cat a.txt aaa bbb aaa(タブ)bbb 3行目の(タブ)区切りは置換できるけど1行目と2行目にマッチした文字を置換できません。 どうやったらできますか?
229 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 14:48:42 .net] 何をどう置換したいのだ? sed のスクリプトのほうも示してほしいのだが
230 名前:228 mailto:sage [2007/12/19(水) 18:53:01 .net] a.txtの内容 ---------- aaa bbb aaa bbb ---------- このa.txtを ---------- eee fff aaa bbb ---------- ↑のように置換したい。 sed -i 's/aaa\nbbb/eee\nfff/' a.txt これで出来ると思ったのですが出来なかったので。 どうやったらできますか?
231 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 19:02:25 .net] -e 's/^aaa$/eee/' -e 's/^bbb$/fff/'
232 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 19:25:27 .net] >>231 アフォかw
233 名前:228 mailto:sage [2007/12/19(水) 19:47:13 .net] 訂正 a.txtの内容 ---------- aaa bbb ccc bbb ---------- このa.txtを ---------- aaa bbb ccc ddd ---------- ↑のように置換したい。 この文字は何行目にあるか不明だとして 一番下のbbbをdddに置換することはできますか?
234 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 20:03:31 .net] >>233 sedじゃなきゃいかんの?
235 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 20:06:41 .net] >>233 ほれ、解答だ ↓ sed -n '${p;q};:s; N;s/ccc\nbbb/ccc\nddd/;P;D;b s'
236 名前:228 mailto:sage [2007/12/19(水) 20:21:37 .net] >>234 sedじゃなくてもいいですけど、置換できますか? >>235 エラーがでました。 extra characters at the end of q command
237 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 21:07:06 .net] >>236 俺のところではエラーにならないけどな。 わかりやすいように改行を入れるとこんな感じ ↓ sed -n ' ${ p q } :s N s/ccc\nbbb/ccc\nddd/ P D b s'
238 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 21:24:57 .net] >>236 sed じゃなくてもいいならこっちで。 シェルスクリプト総合 その9 pc11.2ch.net/test/read.cgi/unix/1187130302/
239 名前:228 mailto:sage [2007/12/19(水) 21:26:39 .net] 1行で出来ませんか?
240 名前:228 mailto:sage [2007/12/19(水) 21:30:49 .net] >>238 わかりました。ありがとう。
241 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 22:06:56 .net] sed -n '${p;q;};:s;N;s/ccc\nbbb/ccc\nddd/;P;D;b s'
242 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 22:24:14 .net] >>241 できました。ありがとう。
243 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/05(土) 05:42:11 .net] sed -n "m(_ _)m|-_-|(っ゚ロ゚)っ"
244 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/05(土) 17:14:31 .net] sed: 1: "m(_ _)m|-_-|(っ゚ロ゚)っ": invalid command code m
245 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/30(水) 03:09:39 .net] ( を に痴漢したいんだけど $ cat hoge | sed -e "s/\\\(/ /" ってやってもなんか駄目っぽい なんで?
246 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/30(水) 05:08:34 .net] >>245 シングルクォートならどうよ? $ sed -e 's/(/ /' hoge
247 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/30(水) 10:17:02 .net] sedはバックスラッシュいらない。 グループ化したいときはいるけど。
248 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/30(水) 23:45:42 .net] >>246 シングルクォートならできるんだけど、なんかこう どうしてもダブルクォートでやりたいお年頃なんです
249 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/31(木) 01:10:52 .net] 大人になりましょう
250 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/31(木) 15:44:59 .net] ある単語(例:foo)をhoge-" と置換したいんですが、 sed -e "s/foo/hoge-"/g" だと当たり前だけどエラーが出ます・・・。 ダブルクォートとかって、どうやって指定したらいいんでしょう?
251 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/31(木) 15:54:58 .net] sed -e "s/foo/hoge-\"/g"
252 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/31(木) 16:18:41 .net] >>251 おお!ありがとう!!できましたヾ(゚∀゚)ノ しかし>を認識しなくなってリダイレクトが使えなくなった・・・。 Winに組み込んだSedだからなのかなぁ・・・。
253 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/02/02(土) 11:55:41 .net] winのコマンドラインパーサーは腐っているから-fで渡したほうが精神的によろしい。
254 名前: ◆b/iUrOax9k mailto:sage [2008/04/13(日) 23:43:03 .net] お邪魔します^^ あのスレの>>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全くわかっていないです^^; 単語の意味がわからない事だらけで意味を調べて廻る事でせいいっぱいで なかなか前進しないままです とり急ぐわけではないのですが もしよろしければお時間の都合の良いときだけで結構ですので教えて頂けましたら幸いです どうぞよろしくお願い致します
255 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/14(月) 01:07:47 .net] >>ALL Win版のsedの話なんだけど、sedスレがUNIX板とLinux板に しか無いので誘導させてもらったけどいいっすか? >>254 PerlやJavaScript(JScript)がわかるなら、そっちでやったほうがいいね。 マッチングさせたい物が1〜3行に渡るって所でモレにはわからん。 できるかもしれないが複雑になるような希ガス
256 名前: ◆b/iUrOax9k mailto:sage [2008/04/14(月) 01:17:30 .net] 144さん ありがとうです お声かけて頂いただけで嬉しかったです まだ解説本を購入して10日程です 全部読んでいないのでどこまでできるかわかりませんが 自力でもう少し頑張ってみます 本当にありがとうございました^^ お疲れのところすいませんでした
257 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/14(月) 23:09:24 .net] よく流れがわからんが やりたいこと全部を一気に教えてもらうとかせずに 知りたいポイントをしぼって一つずつ質問すれば答えてくれると思うよ。
258 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 03:56:38 .net] 各板で暗黙のルールみたいなのがあるんだろうか やりたいことは先に書いた通りなんだけど プログラム板というところで初めはHTMLの読み込み方を聞いてみたんですよ そしたら「何がやりたいのかよくわからん。もっと詳しく。」ばかりレスが付くんです それで私が「ファイルの読み込みです」と返事をすると「具体的にここに書かないとわからない」 これを繰り返しているうちに「後出し条件だ」とか「それはプロにしか出来ないレベル」とか 結局何も返答しないのに威張ってばっかり。 まるで解答者(のフリをして答えない)人の相手をするばかりで全く進まない 解答者らしき人を問い詰めていったら 私のような人間を探してネタをパクッタリいい人を装いながら客として誘導したり 最初から教える気は全く無いって事でした。無駄な時間ばかり過ぎていくので 板を変えてプログラマー板ってとこへも行ってみたのですが そこでも「もっと具体的に」「わからん全部書け」「質問以前に問題あり」 散々小ばかにされては解答は無し。 やはり同じような輩が蔓延っていました 2chで教えて貰おうとするのが間違っているのかもしれません 自分は今までパソコンソフトには全く興味が無かったので こういう汚い連中が露骨に威張り倒してるところがあるとは知りませんでした 他の板でもひどい言葉はよく見かけますが 大体はまともな意見が多いので誰かがフォローしてくれたりしますが パソコン関係は解答者が圧倒的に優位なようだ 「只で教えてるんだぞゴルァ」とかも言われました(一度も解答しない人にw) 只で教えたくないならスルーでいいのではと言い返したら 質問者としてなって無いとか言い出す始末 そういうことでまとめて書いておいたんです 解答者の振りをする連中は答えないのに質問者をいじって遊んでるんです でわ
259 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 06:30:34 .net] >>258 そのとおりです。 回答が欲しい場合はエスパースレへ ↓ 【エスパー】くだ質【エラーメッセージ不要】(1) pc11.2ch.net/test/read.cgi/unix/1207042632/
260 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 06:40:21 .net] うわぁ…これはひどい。 書き込む前に自分のレスを読み返してないのか? 全然まとまって無いし、誤字脱字だらけ。 スクリプト書く前にやりたい事を 簡潔な日本語で書く練習をした方が良い。 いや、マジで。
261 名前:255 mailto:sage [2008/04/15(火) 07:51:22 .net] >>258 暗黙のルールという訳じゃないけどできるだけ楽して、人から聞きだそうという態度の人は煽られるね。 あなたにそういうつもりは無くても例えば、せっかくこのスレまで誘導したのに、 >sed全くわかっていないです^^; >もしよろしければお時間の都合の良いときだけで結構ですので教えて頂けましたら幸いです これだけ見ると、1から10まで教えろって言ってるように見えるよ。 色々なスレを見ればわかるが、質問をして、あなたのように煽られる人と、 煽られない人がいるが、その違いがわからないのであれば、 「2chで教えて貰おうとするのが間違っているのかもしれません」という事。
262 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 11:53:57 .net] >254が辿ってきたのは俺の知る限りこの辺かな。 pc11.2ch.net/test/read.cgi/hp/1205922529/35 pc11.2ch.net/test/read.cgi/php/1203935151/275 pc11.2ch.net/test/read.cgi/tech/1186030400/664 pc11.2ch.net/test/read.cgi/tech/1172242542/126 pc11.2ch.net/test/read.cgi/software/1205309656/109 童謡のいぬのおまわりさんみたいな状況だな。
263 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 14:20:36 .net] みんなレスありがと 答えてくれたことにお礼を言うのは当たり前だと思うんだけど 今までのスレは答える前から上から目線で結局答えてくれない この人たちは解答を知らないのでは?と思うようになったんですよ 昨日も私が質問しているように見えるので他の質問に答えれないだろ あの質問もお前だろって言うので 「それ自分じゃないよその質問には答えてあげればいいよ」とかやりあってたら その質問者が現れた 当然のように解答者にはペコペコ謝ってる(これからも解答してもらうために) この先、解答は期待できない私には一言もなし 初心者用の解説本をヨンから来いと言われるんだけどファイル操作は初心者用ではわからないようだ 手持ちのperlは3冊ある(超初心者用、初心者用、命令逆引き辞書) perl解説本ではファイル操作の解説に至るまでにCGIの解説ばかりだ やっとファイル操作の解説まで読み進めたら5ページほどで終わってるorz perlでファイル操作は中級レベルの解説本を買わなければいけないのかと思うようになった 他の言語を調べてみた CとかjavaとかAjax 初めのほうからファイル操作は解説している ただ解説に使っている言葉自体が命令を使って解説しているので自分には全く理解不能だorz >>262 それ以外にも軽く10スレ以上は廻ったよ それで何か言語を覚えなきゃダメだなってわかったんだ
264 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 14:28:27 .net] 結局、私の言いたかったのは答えれないのに答える振りしてまで 優位に立ちながら出てこなくてもいいのではないのかってこと どうせ答えないのにいかにも「解答欲しけりゃぺこぺこするのは当たり前だろカス氏ね」的な態度とって それで解答しなくても解答者を装ったほうがいいってことなのだろか 何もわからないことまでしゃしゃりでてこなくてもってことです 偽解答者なら私でも今からすぐにできそうだw
265 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 14:34:59 .net] ちなみに某スレでdieがわかんないような逆引き辞書だよ って記載した後に解説本に載ってたサンプルが動かなかったので なぜエラーになるのかわからないって書いたら 難しいことには答えない でも何か答えなければって強迫観念でも沸き起こるのか 解答者を装いながら勉強するのも手段なんだろうけど なにがなんでもしゃしゃり出てくるのは過疎っているからだろね 悪循環板だ
266 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 18:54:33 .net] >>261 の意味がわからないようだね。 >何もわからないことまでしゃしゃりでてこなくてもってことです あんたが自由に質問をしていいように、他の人間もそれに対して自由にレスを付ける事ができる。 「わからないなら、しゃしゃり出てくるな」というのは単なるあんたの都合でしょ? そうでなければ、そいつらを自分より低レベルだと見下したいのか。 そういう事をされて、このスレでクダを撒き、関係の無い人に八つ当たりをしているあんたは、 そいつらと同類という事に何故気付かない? もう一つ。「自分」と「2ちゃんねる」のやり取りだと思っているようだけど、 レスをしているのは「個々の人間」だ。
267 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 18:56:42 .net] あれだろ、渋谷までいきたいんですが教えてください。 って質問して 電車で、とかタクシーで、とか徒歩で、とか教えてくれてるのに 切符の買いかたがわかりません、とか タクシーって何ですか?とか 徒歩って何って読むんですか?とか 馬鹿な質問してるから飽きれられてるんだろ。
268 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 19:02:52 .net] 人生相談ならよそでやってくんないかな。 sedと関係ない。
269 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 19:43:39 .net] >>263-265 www.wdic.org/w/WDIC/%E5%8D%8A%E5%B9%B4ROM%E3%81%A3%E3%81%A6%E3%82%8D >今までのスレは答える前から上から目線で結局答えてくれない まともに回答してくれた人間に随分失礼な言い草だな。
270 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 21:42:30 .net] >>263 >それで何か言語を覚えなきゃダメだなってわかったんだ わかったけど勉強する気が無いわけ? 次から次へと言われるがままにPerl、JavaScript、サクラエディタ、awk、sedと 目先で楽できそうな物を追っかけてるから目的が達せられないんだ。 >初心者用の解説本をヨンから来いと言われるんだけどファイル操作は初心者用ではわからないようだ 参考書として勧められてない「独習Perl」が手元にあるが丁度半分まで読んだ所で扱われているが。 努力をしないで結果を得たいなら、それなりの報酬を出して人を募集するか、 質問専用掲示板で、具体的にサンプルを出し、これこれこーゆースクリプトを 書いて下さい、と依頼するかのどちらか。 okwave.jp/
271 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 21:47:06 .net] sedは数年でなくなる
272 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 23:16:01 .net] 何いきまいてんの? パソコンソフトって結局ゲームソフトみたいなもんでしょ その操作を知ってるからって威張るもんじゃないよね 自分で作ったソフトじゃないんだから ゲームソフトの使い方だったら攻略本としてでるんだろうけどね ソフトの使い方を先に知ったからって偉いと思ってんならスルーすればいいじゃん メモ帳やペイントみたいなもんで使い方覚えたらどってことないと思う いざやり始めた人間をいじくって遊ぶなんて恥ずかしいね
273 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 23:19:39 .net] やぁやぁ我こそはsedの達人なり〜〜 そやって表歩いてみ 誰か「キミ凄いんだ」と声でも掛けてくれたらいいねw 我こそはプログラマーなり〜〜〜〜腹いてー
274 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 23:39:00 .net] 高校、大学と印刷関係の工場でバイトしてたんだ 当時職人と呼ばれる連中はタバコくわえながら あごで指図しては怒鳴りあげたりやりたい放題 その頃何も知らなかったので「○○さん技術あるから仕方ないよね」みたいな空気があった ん? ちょっと待て! 機械の操作だけじゃん 今や家庭用のプリンターでも当時の技術を遥かに超えている 車にの運転とかもそうだよね 昔は女性が免許持って運転してると目立つしなんかあったら「女の運転わ・・」とか言われたもんだ 今の乗用車の性能で言えば当時のレーサーを余裕でぶっちぎれますw そんな感じで機械やソフトを開発してるのは偉いと思うけど 操作で自慢されても5年後にはもっと簡単で3日でものになるソフトが出てるかもしれないよ
275 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 23:49:36 .net] 以後放置で。
276 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/16(水) 03:11:06 .net] あらら、自分の非を指摘されて、それが正しいもんだから逆切れしちゃった訳ね。 まともに反論できないからって、お前の母ちゃんでべそーは無いよな(笑)
277 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/16(水) 04:20:47 .net] 自分で作ったソフトでも無いのにw 使い方知ってるくらいでそこまで威張るか普通? そんなことぐらいで天狗になる奴リアルではいないよw ゲームの上手い子供が威張り倒してるのとどう違うんだ??? パソコンソフトの使い方ぐらいでこんなに意地になる連中マジで知らんわw 教えたくなければ知らん顔してればいいのに何が何でも答えるんだね(解答以外はwwwww) 多分、実社会でもずれてんだろなー キミはた迷惑だと思われてるかもしれないよw 廻りよく見てみw
278 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/16(水) 04:32:41 .net] 何このスレ?
279 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/16(水) 04:58:56 .net] 「教えて君」の見本のような奴だな。
280 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/16(水) 05:24:34 .net] おもちゃを上手く使いこなせたから自慢してるって程度じゃないな 頭小学生並みの幼児性w 上から目線が笑えるw こいつ 奴 プ 笑えるwww 言葉遊びできない奴は何やってもダメって典型
281 名前:名無しさん@お腹いっぱい。 mailto:age [2008/04/16(水) 05:39:44 .net] これほどの逸材を埋もれさせておくのはもったいないから age とく
282 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/16(水) 05:48:41 .net] # >>275 がいいと思うんですが。 >>281 そういうことでしたら>>262 に追加で、逸材ぶりがよく伝わるスレも。 pc11.2ch.net/test/read.cgi/php/1204488452/42-
283 名前:名無しさん@お腹いっぱい。 mailto:sega [2008/04/16(水) 17:32:10 .net] これは壮大な釣りなのか? 一瞬、なりすましを疑ったが、>>262 ,282を見ると、まさに本人だよな。
284 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/15(木) 23:42:43 .net] sedって文全体からある語句を置換するのは簡単だけど、 最初にマッチする語句だけ置換して後はそのまま出力しようとするとちょっと複雑になってしまうよね。 スクリプトの先頭に戻らない様なループを作らないといけない。
285 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/16(金) 00:20:54 .net] >>284 遠まわしに「最初にマッチする語句だけ置換をする簡易な方法はありませんか?」 って聞いてるのか?それとも独り言ならチラ裏へ。
286 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/16(金) 11:39:13 .net] % ( echo hogehoge; echo hogehoge ) | sed '0,/hoge/s/hoge/fuga/' fugahoge hogehoge GNU sed に限るようだが。
287 名前:284 mailto:sage [2008/05/16(金) 21:22:18 .net] >>286 レスサンクスです。ただ最初の0を1でやった場合はうまくいきませんでした。 s/hoge/fuga/ :loop p N s/.*\n// b loop 漏れの頭ではこんなのしか思い付きませんでした。 もっとスマートな方法があったら教えてください。
288 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/16(金) 21:36:55 .net] >>287 /hoge/{ s/hoge/fuga/ :loop n b loop }
289 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/04(水) 19:06:03 .net] /me ?
290 名前:名無しさん@お腹いっぱい。 [2008/07/07(月) 08:34:28 .net] n文字目のxのみyに置換というのはどうすればいいですか
291 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/07(月) 08:36:46 .net] n文字目のxとは、 行頭から(n-1)個の文字のあとに出現するx のことか? 行頭からn回目に出現するx のことか?
292 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/07(月) 09:42:38 .net] >>291 参考までに両方ともお願い
293 名前:名無しさん@お腹いっぱい。 [2008/07/07(月) 12:09:14 .net] 前者です
294 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/07(月) 13:30:25 .net] >>291 後者ですが、念のため両者の場合について教えてください
295 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/07(月) 21:50:58 .net] 行頭から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を変数にするのは漏れには粍
296 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/07(月) 23:32:28 .net] ()ってのは条件になるん?
297 名前:290 293 [2008/07/08(火) 10:30:38 .net] ありがとうございます 確かに.×4みたいに表現できたらかっこいいですが これで文句なしです!
298 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/08(火) 11:11:36 .net] >>297 ×4は無理っぽい。 echo x-x-x-x-x- | sed 's/\(\([^x]*x\)\{3\}[^x]*\)x/\1y/'
299 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/08(火) 11:49:57 .net] >>298 Solarisのsedじゃ動かんな。
300 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/08/29(金) 17:04:29 .net] 01101,"0600031","ホッカイドウ","サッポロシチュウオウク","キタ1ジョウヒガシ","北海道","札幌市中央区","北一条東",0 ↓ 01101,"0600031","ホッカイドウ","サッポロシチュウオウク","キタ1ジョウヒガシ","北海道","札幌市中央区","北一条東",0 この第5フィールドの半角英数だけ(2個有る場合もあり)全角にしたいのですが どのようにsedを作ればいいでしょうか?
301 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/08/29(金) 17:07:35 .net] >どのようにsedを作れば 釣りポイントはここですか?
302 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/08/29(金) 21:15:26 .net] その形式は、郵便屋の郵便番号データだろ。 エクセルか何かの一覧表をcsvに落としただけの代物だから そのままでは役に立たないよ。 そのままDBに格納し、専用プログラムで変換かけて正規化してる。
303 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/08(水) 23:13:50 .net] aaa.hoge bbb.hage ccc.foge とかいう文字列があって、*.hoge以外にマッチする正規表現って出来るのでしょうか?
304 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/09(木) 00:18:38 .net] スレ違い。正規表現スレに池
305 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/09(木) 21:57:14 .net] >>303 その文を素直に読むと、当該文字列にだけはマッチしない 正規表現と読めるが、書き込み子の心情を忖度すると、 sed 's/[a-c]{3}\.hoge/==matched==/' って事かな? まあ、[a-c]* でも、(aaa|bbb|ccc) でも、[[:alpha:]]* でも、 マッチする表現は無数に有るけど、(・・に、だけマッチする) を、求めているなら、そもそも*.hoge って見当外れだし、 要するに、何が知りたいのか良く分からん。
306 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/10(金) 17:29:18 .net] >>305 > >>303 なるほど、ありがとうございます。
307 名前:名無しさん@お腹いっぱい。 [2008/10/27(月) 23:08:07 .net] ファイル内の、スペース+改行をスペースのみに置換したいのですが、 どのように記述すればよいのでしょうか。 データ数が数十万行あるため、ファイルを全部読み込んでから 置換する方法では、容量がオーバーしてしまいました。
308 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/27(月) 23:26:18 .net] >>307 Perl か何かで書いちゃった方が早いんじゃね?
309 名前:名無しさん@お腹いっぱい。 [2008/10/27(月) 23:29:29 .net] >>308 環境上、Perlを使用することができないんです。 sedでは難しいでしょうか。
310 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/28(火) 00:02:57 .net] 環境によって違うと思うけど普通の書き方じゃダメなのか? s/ \n/ /g
311 名前:名無しさん@お腹いっぱい。 [2008/10/28(火) 00:07:58 .net] >>310 自分の環境では、\nが認識されませんでした。
312 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/28(火) 02:53:50 .net] >>311 OSの具体的な名前とかは出さないのな。 s/\ / /g では?
313 名前:312 mailto:sage [2008/10/28(火) 02:56:53 .net] すまん。勘違いした。 sed はPerlと違って、入力したときに改行を取り除いてからパターンスペースに送るから、 そこで改行探しても見つかりっこない。 んで、出力時に自動的に改行は付くし、これを抑制する手段はない。 せめて awk使っとけ。Perlなくてもawkはあるだろ。
314 名前:312 mailto:sage [2008/10/28(火) 02:58:41 .net] すまん勘違いしてた。 sedはPerlと違って入力時に改行を取り除くから、置換時に改行探したって見つかりっこない。 Nとかで次の入力を読んでくれば間に挟まるけど。
315 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/28(火) 03:19:55 .net] おまえらマルチに親切だな
316 名前:名無しさん@お腹いっぱい。 [2008/10/28(火) 07:09:08 .net] ありがとうございました。 sedでは難しそうですね。別の方法を探してみます。
317 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/28(火) 07:21:00 .net] 微妙に変えてあるとこがうまいな。
318 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/28(火) 22:44:37 .net] tr -d '\n'
319 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/28(火) 22:47:24 .net] 良く読んで赤面しろw >>318 >>307 「スペース+改行をスペースのみに置換したい」
320 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/28(火) 22:54:10 .net] >>307 sed ' :again / $/{ N s/?n// b again } '
321 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/16(月) 16:23:57 .net] sedの公式ホームページってないのでしょうか awkは一応gawkがあって一応開発も続いているようですが sedはどのような状態なのでしょうか? いつまでたっても最短マッチを搭載しない理由もお教えねがいます。
322 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/16(月) 23:57:10 .net] そういう機能を追加すると、既存のスクリプトが動作しなくなるから。 ポータビリティを失ってまで実装する必要がない。(それこそ、perlでもawkでも使えばいい)
323 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/17(火) 09:03:12 .net] なるほど、参考になりました。 もし開発に参加できるなら参加したいと思っていたのですが そのような理由ならそういったときはperlやawkに頼る事にします。
324 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/18(水) 09:33:00 .net] >>322 sedに正規表現perl互換モードを搭載すればいいだけなのにね
325 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/19(木) 18:21:24 .net] GNU sedの-r みたいなので、perlモードがあればいいね。
326 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/19(木) 19:39:12 .net] >>321 gnu sed 拡張している人たちがいるからそのあたりに乗ってみれば?
327 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/19(木) 20:18:08 .net] onigsedじゃダメなのか? つーか、perl -pe でいいじゃん。
328 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/24(火) 17:21:46 .net] >>321 GNU sed なら www.gnu.org/software/sed/
329 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/27(金) 16:21:29 .net] >>327 今度はsed互換ではないという
330 名前:名無しさん@お腹いっぱい。 [2009/06/29(月) 20:49:52 .net] 質問させてください。 sedでホワイトスペースを解除または増やす方法ってあるのでしょうか?
331 名前:名無しさん@お腹いっぱい。 [2009/06/29(月) 20:52:21 .net] 間違い。ホールドスペースです。
332 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/29(月) 21:16:24 .net] 以下ホワイトベース禁止
333 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/29(月) 22:40:10 .net] 白兵戦になるぞ!
334 名前:名無しさん@お腹いっぱい。 [2009/07/03(金) 03:11:56 .net] sedで、 /pattern/r file ってするとマッチした行の次にfileの内容が出力されますが、 その行の前に出力する方法はないでしょうか? ちなみにマッチする行は1個しかありません。
335 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/03(金) 23:31:09 .net] sed -n -e '/pattern/r file' -e p
336 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/03(金) 23:49:16 .net] ごめん、ダメだった。こっちで。 sed -n -e 'x;p;g' -e '/pattern/r file' 1行目の空行は無視して
337 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/03(金) 23:53:59 .net] 1行めの空白はもう1段 | sed 1d で消せるけど…… 入力の最後の1行出てなくない?
338 名前:336 mailto:sage [2009/07/04(土) 00:17:53 .net] 出てなかった。 sed -n -e 'x;p;g' -e '/pattern/r file' -e '$p' という感じで最後の行を出力することは出来るけど patternが最後の行の場合だけ、fileの内容が次行に出ちゃう。 自分はギブアップ
339 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/04(土) 12:34:06 .net] いろいろありがとうございます。 sed 1個では難しいようですね。 patternより前とpattern以後に別けて、 間にfileをcatするしかないのかもしれません。
340 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/04(土) 18:04:47 .net] sed 2個ならなんとか sed -e '$aEND' | sed -e ' $d /pattern/{ r file N } ${ P d }'
341 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/24(木) 17:28:09 .net] >>295 の例に似てますが、 バイナリファイル(1行めの)4バイトめを ASCII 文字 0x02 -> 0x03 に 変更するにはどうすればいいでしょう? # sed -e '1s/^\(...\)\x02/\1\x03/' in > out ではだめでした。 試した環境は FreeBSD 7.2 です。
342 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/24(木) 18:02:08 .net] >>341 (dd bs=3 count=1; dd bs=1 count=1 of=/dev/null; printf '¥003'; cat) < in > out
343 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/25(金) 10:26:24 .net] >>341 sed -e "1s/^\(...\)^B/\1$(printf '\03')/" でできんかね。^BはC-v C-b入力できるはず。
344 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/25(金) 10:46:05 .net] >>343 最初の3バイトに改行文字がない保証がないから一般的にはだめそうだな。 やっぱ行指向のsedでバイナリファイルを操作するのは無理があると思う。
345 名前:341 mailto:sage [2009/09/25(金) 12:31:36 .net] \x02 などは GNU sed の拡張仕様でした。 # pkg_add -r gsed # rehash # gsed -e '1s/^\(...\)\x02/\1\x03/' in > out でできました。
346 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/25(金) 12:37:49 .net] >>342-344 ありがとうございます。 >>342 の dd を使った方法は大変参考になります。 あと、 # sed -e '1s/^\(...\)^V^B/\1^V^C/' in > out でもできました。 ^V^B は <Ctrl>V<Ctrl>B 、 ^V^C は <Ctrl>V<Ctrl>C です。
347 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/20(土) 21:42:41 .net] ひとつ、お聞きいたします。 Nコマンドって、最後の行で次行が読めない場合、何もせず終了、 のはずですよね。すると、 sed 'sed ':l;N;bl' <file> とすると何も出力されないんじゃないかと思うんですが、 私の使っているGNU sed 4.1.5版だと<file>の全部を出力してしまいます。 つまり、「何もせず終了」じゃなくて、「デフォルト出力して終了」 になっているように思われるわけですが、これは、どうなんでしょうか。
348 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/20(土) 23:16:51 .net] >>347 infoに書いてありました。
349 名前:名無しさん@お腹いっぱい。 [2010/07/01(木) 23:39:24 .net] なるほど
350 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/08/17(火) 13:08:10 .net] yコマンドで"/"を対象に入れたいんですが出来ないんでしょうか 初歩的ですいません
351 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/08/17(火) 13:23:28 .net] >>350 sed y,abc,ABC, とかできるから、 sed 'y,ab/,ab%,' もできる。
352 名前:350 mailto:sage [2010/08/17(火) 23:26:44 .net] そうか、区切り文字変えられるのsコマンドばかりじゃないんですね。 どうもありがとうございました。
353 名前:初心者 [2010/10/23(土) 20:01:51 .net] sedでシェルすくりぷとの行つなぎバックスラッシューを消して、繋ぐことできますか? perlなら-pe "s/\\\n//g"でできます。 edでも、awkでもできれば、教えていただけませんか?
354 名前:名無しさん@お腹いっぱい。 [2010/10/24(日) 13:40:00 .net] できる
355 名前:初心者 mailto:sage [2010/10/24(日) 21:13:33 .net] できました ありがとう
356 名前:初心者 [2010/10/25(月) 22:07:05 .net] できないようですね、残念です。
357 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/10/26(火) 19:38:19 .net] sed -e ':lbl' -e '/[^\\]$/b' -e 's/\\$//' -e N -e 's/\n//' -e 'b lbl' 置換パターンに\nを許さない場合は sed -e ':lbl' -e '/[^\\]$/b' -e 's/\\$//' -e N -e 's/ //' -e 'b lbl'
358 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/10/28(木) 08:37:34 .net] 踊っているように見えて仕方がない echo "000000$NUM" | sed -e 's/.*\(..\)\(..\)\(..\)/\1\2\3/'
359 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/11/28(日) 18:33:17 .net] sedでファイルのある部分までをファイル1、それ以降をファイル2に出力ってスマートにできませんか? 例えば100行のsample.txtというファイルで、 sed -e "50q" < sample.txt > sample1.txt sed -e "1,50d" < sample.txt > sample2.txt の様にするのは無駄におもえてしまいます。
360 名前:名無しさん@お腹いっぱい。 [2010/11/28(日) 18:39:52 .net] sed -ne '1,50w sample1.txt' -e '51,$w sample2.txt' < sample.txt とか?
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>//' これで良いのかな?
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' 未だに内容理解できてないぜ!
556 名前:名無しさん@お腹いっぱい。 mailto:sage [2019/02/09(土) 12:28:51.42 .net] 556 スクリプトというかコマンドだな
557 名前:名無しさん@お腹いっぱい。 mailto:sage [2019/02/09(土) 13:34:35.65 .net] 便利なの持ってんじゃん tacでいいような気もするけど
558 名前:名無しさん@お腹いっぱい。 mailto:sage [2019/03/12(火) 05:03:42.07 .net] 短くても難読すごいから可能ならtacのたぐい、基存のコマンドで処理したい
559 名前:名無しさん@お腹いっぱい。 [2019/03/19(火) 12:52:18.64 .net] GNU sedじゃなくて、BSDsedをビルドしたい。 OS付属の/usr/binソースはあるけど https://github.com/freebsd/freebsd/tree/master/usr.bin/sed sed単体がない。 ビルド出来るBSDsedのURLを教えてください
560 名前:名無しさん@お腹いっぱい。 mailto:sage [2019/03/19(火) 13:05:15.53 .net] そこの使えばいいんじゃないの Makefileは適当に改変するとして
561 名前:名無しさん@お腹いっぱい。 [2019/03/19(火) 13:55:05.58 .net] >>560 make -f MakefileしだんたけどカレントディレクトリのMakefileはそのままでは使えなかった。 オプションが必要なのかも知れないが、よくわからず。
562 名前:名無しさん@お腹いっぱい。 mailto:sage [2019/03/19(火) 19:46:54.93 .net] >>561 FreeBSD のソース用の Makefile は BSD make 用で GNU make では使えないよ。 なんの OS を使ってるのかわからいけど、 pkgsrc が対応している OS なら pkgsrc 導入して、 textproc/nbsed をインストールするのが一番楽だと思う。 pkgsrc.org/
563 名前:名無しさん@お腹いっぱい。 [2019/03/20(水) 04:19:12.82 .net] >>562 MacOSです。ソース側で単体ビルドできる用意されていれば出来ると考えました。 早速挑戦して上手く行ったらここに報告します。
564 名前:名無しさん@お腹いっぱい。 [2019/03/20(水) 04:24:16.70 .net] >>562 >FreeBSD のソース用の Makefile は BSD make 用で GNU make では使えないよ。 これ当たってた。BSDの本家に問い合わせたら560のURLにあるsedのmakefileはOS用らしい。 自分で一からconfigureやmakefileを用意すればビルド出来るのかもね。 sedの最新版を使いたかったが時間あるときに563を試します。
565 名前:名無しさん@お腹いっぱい。 mailto:sage [2019/03/20(水) 04:45:39.59 .net] Makefileの中見てgcc一発でも行けんだろって気がするが って自分は前それやってみた気もするが それくらい試せよ
566 名前:名無しさん@お腹いっぱい。 [2019/03/20(水) 07:03:53.34 .net] >>565 確か、Linux のcore utilとかだとconfigure sedみたいなかんじで、コマンドの単独コンパイルできる。 manにかかれているメアドでBSDの本家に問い合わせたら 単独コンパイル出来ないとの返事だった。OSビルド用らしい もう消してしまったが、成功した人がいたら教えてほしい。方法がわかれば再試行する気はあります
567 名前:名無しさん@お腹いっぱい。 mailto:sage [2019/03/20(水) 07:04:29.16 .net] ごめん、もうsageるべきだった
568 名前:名無しさん@お腹いっぱい。 [2019/03/26(火) 09:49:12.30 .net] 別にageでもいいよ
569 名前:名無しさん@お腹いっぱい。 mailto:sage [2019/06/24(月) 23:38:04.88 .net] 正規表現一致した行と,その一致した行と4行後のみを抽出とかってどうすればいいですか?
570 名前:名無しさん@お腹いっぱい。 mailto:sage [2019/06/25(火) 13:21:07.60 .net] -n '/re/{p;n;n;n;n;p;}' とか?
571 名前:名無しさん@お腹いっぱい。 mailto:sage [2019/06/27(木) 17:00:14.56 .net] *.cと*.hを落として gcc -I . compile.c main.c misc.c process.c -o sed するとmain.cの__unreachable();がリンクエラーになるけど https://github.com/freebsd/freebsd/blob/master/sys/sys/cdefs.h#L385を参考に((void)0);に置き換えればビルドできるじゃん
572 名前:名無しさん@お腹いっぱい。 mailto:sage [2019/07/02(火) 15:24:44.16 .net] >>571 有難う。諦めていたけど早速やってみます。
573 名前:名無しさん@お腹いっぱい。 mailto:sage [2019/07/02(火) 22:35:36.02 .net] 560です。572のとおりビルドできました。 インストール済のMac版sedは2004年頃なのでバージョンアップできて助かります。 これから100近くあるソースを調べます。 linux版との互換性ない記述を書いてしまいました。 gnu sedもMac上ではビルドできていませんが諦め。
574 名前:名無しさん@お腹いっぱい。 mailto:sage [2019/07/02(火) 23:46:07.78 .net] マジかよ gnu sedなんてそれこそ./configureしてmakeだけじゃん --program-prefix=gくらいつけといた方がいいだろけどさ
575 名前:名無しさん@お腹いっぱい。 mailto:sage [2019/07/02(火) 23:47:55.81 .net] あー、なんかつい誘導されちゃった感じ...
576 名前:名無しさん@お腹いっぱい。 mailto:sage [2019/07/03(水) 01:18:23.32 .net] >>574 560です。エラー、コピペしていいですか?長いんですけど。。。
577 名前:名無しさん@お腹いっぱい。 mailto:sage [2019/07/03(水) 03:40:41.85 .net] gnu sed もインストール出来ました。 bash_profileのパスを最小限にしたらエラーがなくなったみたい?
578 名前:名無しさん@お腹いっぱい。 mailto:sage [2019/07/03(水) 03:41:36.40 .net] >>576 質問は取り消します。有難うございました。
579 名前:30GBでも大丈夫 thanks sed mailto:sage [2019/07/06(土) 21:39:28.25 .net] sed -n '10509757p' primes 2147483563 2147483579 2147483587 2147483629 2147483647-2147483648-2147483647-2147483646-2147483645-2147483644 OFやらかした最終行 ... -1800706952-1800706951-1800706950-1800706949-1800706948-1800706947-1800706946-1800706945-1800706944-1800706943 sed -ie '10509758,$d' primes
580 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/09/08(水) 17:50:49.92 .net] sedのホールドスペースは、その内容を削除するにはどうすれば? とりあえずs/.//g;xでできたけど、もっと直接的なやりかたはないんかなー、と。
581 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/09/08(水) 17:54:36.56 .net] sedスクリプトファイルでよく使われる拡張子はあります? ほとんどコマンドラインに-eで書ききるものでしょうが、あえてファイルにするとしたらやっぱりsed?
582 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/12/25(土) 09:31:39.87 .net] >>581 別にこだわる必要はないけど 各種sed処理系付属のexamplesとか覗くとみんな.sedなので、あえて正書法にこだわるならやはり.sedかと 実装を隠したコマンドとして纏めたい、常に特定のオプション(-i等)で起動したい、主コードとsedの拡張チェック等を分離したいならenvを使うとよい sedによってはオプションを重ねられたり重ねられなかったりするので #! /usr/bin/env -S sed -f (-i -n -e 'check')
583 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/12/25(土) 09:35:07.03 .net] ところでgnu sedの付録のdc.sedってのやばいなこれ 興味深いけど誰か注釈付けてくれたりしてないのか
584 名前:名無しさん@お腹いっぱい。 [2023/02/05(日) 22:38:55.04 .net] onigsed がダウンロードできなくて困ってます。
585 名前:名無しさん@お腹いっぱい。 mailto:sage [2023/09/30(土) 14:56:35.67 .net] (@д@)/?.うそ~!””
586 名前:名無しさん@お腹いっぱい。 [2024/03/27(水) 19:48:02.41 .net] たどり着けない境地だ
587 名前:名無しさん@お腹いっぱい。 [2024/03/27(水) 19:55:02.09 .net] それらが引退した人も逮捕されてるの見つかって捕まって誰かに相手されないもんね ヒスンは凄く特殊な銃を使って
588 名前:名無しさん@お腹いっぱい。 [2024/03/27(水) 21:38:04.20 .net] 4232 じり下げはやめて良い部屋は空いてるんだったら 胃がびっくりしておかしくなる 家庭崩壊する それが政治とどう関係あるのが信じられなくなったから焦った
589 名前:名無しさん@お腹いっぱい。 [2024/04/01(月) 17:36:13.18 .net] awkについて語るスレ $3 https://mevius.5ch.net/test/read.cgi/tech/1600054668/
590 名前:名無しさん@お腹いっぱい。 mailto:sage [2024/05/30(木) 11:15:41.15 .net] pcre使えるsedある?
591 名前:名無しさん@お腹いっぱい。 mailto:sage [2024/05/30(木) 19:55:34.18 .net] https://github.com/christopherfujino/sed-pcre はイケてるんかな
592 名前:名無しさん@お腹いっぱい。 [2024/08/13(火) 08:10:10.49 .net] sed '/削除したい行/d' で「削除したい行」は削除されるが、「削除したい行」の1行前から2行後迄削除したい場合は、どう書くの?
593 名前:名無しさん@お腹いっぱい。 mailto:sage [2024/08/13(火) 09:58:16.91 .net] grepだと複数行はAオプションがあるけど、sedは複数行は無理なんじゃないかな
594 名前:名無しさん@お腹いっぱい。 [2024/08/13(火) 10:50:05.64 .net] >>593 質問の前提を変更するっち。以下、 sed '/削除したい行/,+2d' で、GNU sedでは「削除したい行」から2行後まで削除されるが、
595 名前:名無しさん@お腹いっぱい。 mailto:sage [2024/08/13(火) 22:27:16.64 .net] sed -n '{ /削除したい行/{ g; s/\n[^\n]*$//; h; n; n; bc }; H; s/.*//; :c }; ${ g; s/\n//; p }' 黒魔術じみたコードになっちゃった…
596 名前:名無しさん@お腹いっぱい。 mailto:sage [2024/08/13(火) 23:44:44.87 .net] 複数行、出来るんだ 知らなかった
597 名前:名無しさん@お腹いっぱい。 [2024/08/14(水) 05:52:06.53 .net] その手のためだけに,plan9のsamを使ってた.
598 名前:593 [2024/08/14(水) 19:02:06.33 .net] >>595 ありがとう。 # でも全然解らん...
599 名前:名無しさん@お腹いっぱい。 mailto:sage [2024/08/14(水) 20:18:50.75 .net] 仕組みを学ぶのは後で、やりたいことが実現できるならいいでしょ sudo \rm -rf / とかを躊躇無く実行しちゃうみたいなのは危険だけど
600 名前:名無しさん@お腹いっぱい。 mailto:sage [2024/08/15(木) 01:15:03.31 .net] "削除したい行"行が連続する場合 前1行がない場合 後2行がない場合
601 名前:593 [2024/08/15(木) 08:30:40.41 .net] >>600 仕様を明確化せよという意味だべか。 「削除したい行」の1行前から2行後迄の削除対象「範囲」は、1ファイルのどこかに必ず1箇所存在する。なのでその3条件は無い。
602 名前:名無しさん@お腹いっぱい。 mailto:sage [2024/08/15(木) 18:45:42.03 .net] >>595 seq 10 | sed -n '{ /^9$/{ g; s/\n[^\n]*$//; h; n; n; bc }; H; s/.*//; :c }; ${ g; s/\n//; p }' 何も出力されない 最終行に到達してからさらに n コマンドを使うと、以降はアドレス $ に一致しなくなるみたい n を $!n にするのが手っ取り早い あとこれ s/.*// は要らないと思う 外側の { } も seq 10 | sed -n '/^9$/{ g; s/\n[^\n]*$//; h; $!n; $!n; bc }; H; :c; ${ g; s/\n//; p }'
603 名前:名無しさん@お腹いっぱい。 mailto:sage [2024/08/15(木) 18:59:31.57 .net] sed '$!N;/削除したい行/,+2d;P;D;'
604 名前:名無しさん@お腹いっぱい。 mailto:sage [2024/08/15(木) 22:15:36.30 .net] sed 'H;1h;$!d;x; s/^\([^\n]*\n\)\{0,1\}削除したい行\(\n[^\n]*\)\{0,2\}\n\?//m;'
605 名前:名無しさん@お腹いっぱい。 [2025/04/27(日) 17:41:15.94 .net] I sed.
606 名前:名無しさん@お腹いっぱい。 mailto:sage [2025/10/17(金) 18:28:31.06 .net] それはsaidや