- 1 名前:名無しさん@お腹いっぱい。 [04/05/28 16:56]
- sedスレッド
- 38 名前:BBQ mailto:vt100 [05/01/27 15:19:10 ]
- 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 ]
- >>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 ]
- うちの OS だと、ならんけど?
まあ sed 's/[^-+0-9]/ /g' temp.txt って書いた方が簡潔だとは思うが。
- 41 名前:BBQ mailto:vt100 [05/01/27 15:55:36 ]
-
>>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 ]
- >>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 ]
- >>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 ]
- すまん 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 ]
- なんでperl使わないの?
- 46 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/28 17:44:42 ]
- >>45
どうやって、perl おぼえた?
- 47 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/28 18:02:57 ]
- なんでperl使うの?
- 48 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/28 18:10:23 ]
- らくだ本に一万円投資しちゃったからとか。
- 49 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/28 18:15:54 ]
- どうやって perl インストールしたの?
- 50 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/30 00:56:27 ]
- インストールできなかったの?
- 51 名前:名無しさん@お腹いっぱい。 [2005/03/24(木) 05:43:55 ]
- FreeBSD の sed って c コマンドの後のコマンドも実行するね。
これってバグじゃね?
- 52 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/24(木) 09:44:49 ]
- >>51
意味不明.
- 53 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/26(土) 16:20:20 ]
- perlは、難しいので
sed & awkでやって逝く事にしました。
- 54 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/26(土) 17:23:11 ]
- 適材適所ってこともあるんだよもん。
- 55 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/29(火) 16:37:56 ]
-
若者は、PERLを消化して部位部位いわせsed&AWK何それ?状態 案外、sed&AWKを学ぶ必要がなかったりする? 新しいのについて行けずに、たちどまってしまったオッサンは、sed&AWK せめてPERLぐらいやる。だだでえくいっぱぐれてるのに 両方の言語を使用したことのあるエキスパートに意見を伺いたい sed&AWKなら簡単にできてPERLなら難しい処理例 PERLなら簡単にできてsed&AWKなら難しい処理例 若者、おっさんに向けての指針等など
- 56 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/29(火) 21:20:02 ]
- sed 's/hoge/hage/'
のほうが perl -pe 's/hoge/hage/' より短い。
- 57 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/29(火) 22:01:24 ]
- ぐれてないでまず日本語を学ぶ >だだでえくいっぱ
- 58 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/30(水) 12:32:32 ]
- 大岡山のキティに英語の勉強しろといわれたので、伊藤和夫先生のテキストで勉強しました
-xx-xx-xxなperlは、使用しない故スティーブンス先生にも意見を聞きたいので >>59 召還ヨロシク
- 59 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/30(水) 14:06:53 ]
- >>58は浪人生
- 60 名前:名無しさん@お腹おっぱい。 mailto:sage [2005/04/21(木) 22:37:43 ]
- sed 's/い/お/g' file
で、 file内の「いっぱい」が「おっぱい」に置換されるのは、 正 常 !
- 61 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/04/21(木) 23:05:31 ]
- s/い/お/g ←「g」付きだと置換結果は「おっぱお」じゃないの?
- 62 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/09(月) 16:07:16 ]
- 質問です。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 ]
- >>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 ]
- ありがとうございます、とりあえず>62に関しては
's/uge,[^,]*,//' とすることにします。
- 65 名前:名無しさん@お腹いっぱい。 [2005/05/10(火) 18:46:02 ]
- abc xyzをaxbyczにしたいのですが
- 66 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/10(火) 19:18:22 ]
- >>58
> 大岡山のキティに英語の勉強しろといわれたので、伊藤和夫先生のテキストで勉強しました だれ?
- 67 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/10(火) 20:56:07 ]
- sed 's/abc xyz/axbycz/'
- 68 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/18(水) 10:04:29 ]
- >>65
echo abc xyz |sed -e "s/^/%/; :ll; s/[%]\(.\)\(.*\) \(.\)\(.*\)/\1\3%\2 \4/; tll; s/%//;"
- 69 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/18(水) 17:29:04 ]
- >>66
>だれ? は、 >大岡山のキティ >伊藤和夫 の以上2つのうち誰の素性を知りたいのだね?
- 70 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/18(水) 19:10:25 ]
- 68は「大岡山のキティ」本人で複数の人間に「英語の勉強しろ」と言っていた、
という可能性は無いの。
- 71 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/20(金) 15:37:59 ]
- >>70
「大岡山のキティ」に心当たりがあるなら>>66 のためにも、sedのsコマンドで「大岡山のキティ」を痴漢するってのは如何
- 72 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/27(金) 13:57:14 ]
- GNU sedのVersion 4で、マルチバイトパッチをあてたVsersion 3みたく文字コー
ドを決めうちして変換する(ctype=EUCみたいに)方法はないのでしょうか。 jiskan16.bdfに外字を足してテキスト処理をやっているのですが、行頭に外字の コードがくると、Version 4.1.4では誤認識してしまうのをなんとかしたいのです が。
- 73 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/27(金) 18:46:29 ]
- grepもUTF-8使えるようになって欲すい。
- 74 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/27(金) 19:03:08 ]
- FreeBSDでutf-8なロケールでgrep使えばOK。
- 75 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/28(土) 20:35:52 ]
- sedで四則演算系は作れますか? 理由も教えてください。
- 76 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/28(土) 22:09:07 ]
- 宿題は自分で。
- 77 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/29(日) 00:01:58 ]
- >>72
bashを使っているとして、LANG=ja_jp.eucJP sed -e "s/hogehoge/fugaguga/" みたいなのじゃダメなの?
- 78 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/29(日) 07:50:40 ]
- >>76
分からないのならレスすんな。
- 79 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/29(日) 08:47:11 ]
- 煽っても無駄ですよ。宿題は自分で。
- 80 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/29(日) 08:48:54 ]
- 75に答えているので78はレスしないでください。
- 81 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/29(日) 13:38:42 ]
- >>77
情報小出しですみません。LNAGは設定してます。 ググってもsedの古いソースがみつからなかったので、とりあえずは、Vine2.6 の3.0.2 (だかなんだかの)のバイナリを入れて動かしてますんで、当面は困っ てはいないのですが、システムのバージョン上げるときに、個別対応する項目 が増えるのは面倒だなと思って質問した次第です。
- 82 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/30(月) 01:02:38 ]
- >>81
GNU sedは4.xでマルチバイト文字対応が別の形で入ってるからね。 3.Xのローカライズパッチではそれほど厳密には検査されなかった 文字範囲が厳しくなってる可能性がある。 内部的には wide character に変換してごにょごにょしてるんだけど、 外字だとここでひっかかるのかもね。最悪自分でソースに手を入れて wrapper関数書くしかないかも(外字をPUAにわりあてちゃうとか)。
- 83 名前:名無しさん@お腹いっぱい。 [2005/05/31(火) 23:18:23 ]
- >>81
> ググってもsedの古いソースがみつからなかったので、 Ring server にあらかたのバージョンあったよ。 もちろん日本語対応パッチはそこにはないんだけど (これはほかを探せばある)。
- 84 名前:名無しさん@お腹いっぱい。 [2005/06/10(金) 22:45:51 ]
- > pc8.2ch.net/test/read.cgi/unix/1113664637/298
Nで次の行もパターンスペースに読み込んでいた場合に、 d と D の違いが出る。
- 85 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/10(金) 22:56:05 ]
- >>84
ありがとう
- 86 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/10(金) 23:23:16 ]
- >>84,85
Nに加えて、sなどで意図的にパターンスペースに改行を入れることもあるよ。 Nを行の先読みに例えれば、後者は行の差込み挿入のような意図で行うんだけど。 その場合にもdとDの違いが出る。
- 87 名前:名無しさん@お腹いっぱい。 [2005/07/15(金) 08:19:58 ]
- 半角かなを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 ]
- >>87
nkf じゃだめなん?
- 89 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/07/15(金) 12:15:30 ]
- >>87
UNIX上のsedなら、それでちゃんと動作するよ。
- 90 名前:87 [2005/07/15(金) 13:03:54 ]
- >>88
すみません、nkfで上記の置換を行う方法がわかりません よければ教えてください >>89 可能であれば、windowsで動作した方がいろいろと好都合 ですので...
- 91 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/07/15(金) 13:21:49 ]
- >>90
UNIX上のsedでは動作 ↓ sedの文法はそれで間違ってない ↓ Win版のsedのバグまたは仕様 ↓ UNIX板でこれ以上聞いても無駄
- 92 名前:87 [2005/07/15(金) 13:23:40 ]
- 88、89さん申し訳ありません
wiodows上でのsedでも87のsed置換は可能です 私の勘違いでした 改めて質問させていただきます 設定済みmeadowを使って リージョンを設定して M+shift+|で87のsedスクリプトを走らせた場合 \になってほしい部分が化けてしまいます 原因や対処方法がおわかりに方がいらっしゃったら ご教示願えませんでしょうか?
- 93 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/07/15(金) 13:28:00 ]
- set-process-coding-system
- 94 名前:87 [2005/07/15(金) 13:52:19 ]
- >>93
ヒントありがとうございます 上述したように リージョンにコマンドを渡す方法を使う場合 set-process-coding-systemの記述は どこに、こんな風に記述すればよろしいのでしょうか? 頭が悪いので設定方法がわかりません よろしければ教えてください
- 95 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/07/15(金) 14:31:39 ]
- >>94
ずっと効くから.emacs に書いとけ。
- 96 名前:名無しさん@お腹いっぱい。 [2005/07/17(日) 00:37:09 ]
- >>92
半角かなばっかりの文書を置換するのはできるみたいですが 漢字が混じってたら漢字は化けます 対処方法がありますか?
- 97 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/07/17(日) 04:56:30 ]
- >>96
> 対処方法がありますか? おまえ朝鮮人のにおいがぷんぷんするんだが。 やっぱり朝鮮人だったか。おねがいだから、国に帰ってくれ。
- 98 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/08/02(火) 11:01:13 ]
- sed /^$/q
が「最初の空行までを出力する」ということで、メールのファイルからヘッダ部分を 抜き出すのに使えることがわかったのですが、その逆「最初の空行から後を出力 する」のはどうするのがよいでしょうか? 「sed ではなく○○を使え」とかいうことになるのかもしれませんが……
- 99 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/08/02(火) 11:42:31 ]
- sed '1,/^$/d'
- 100 名前:98 mailto:sage [2005/08/03(水) 00:43:23 ]
- >99
なるほど。「最初から空行までを削除する」と読むわけですか。 98の「空行が見つかったら終了する」も奥が深いと思ったのですが、まだまだ精進が 足りませんね。ありがとうございました。
- 101 名前:名無しさん@お腹いっぱい。 [2005/08/30(火) 15:38:56 ]
- age
- 102 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/08/31(水) 16:15:27 ]
- 1行野郎どっさり
www.student.northpark.edu/pemente/sed/sed1line52.txt
- 103 名前:名無しさん@お腹いっぱい。 [2005/10/12(水) 15:14:18 ]
- $ 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 ]
- {\(.*\)}の部分が最長マッチしちゃんだから、ここのマッチが}で切れるよう
{\([^}]*\)}に変えればいい。
- 105 名前:103 mailto:sage [2005/10/12(水) 15:47:46 ]
- >>104
なるほど! どうもありがとうございます.
- 106 名前:名無しさん@お腹いっぱい。 [2005/11/24(木) 20:57:48 ]
- コマンドラインオプションの -n がよく理解できないんですが、どういう場面で使えばいいんでしょうか
- 107 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/24(木) 21:06:03 ]
- matchしたところだけくださいってな場面
- 108 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/24(木) 21:44:39 ]
- sedを「セド」と呼ぶぽ
- 109 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/25(金) 01:55:29 ]
- 設定ファイルのコメントを除くときとか
- 110 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/06(金) 04:53:17 ]
- sedってホールドスペースは1個しか使えないの?
- 111 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/06(金) 06:52:12 ]
- >>110
yes
- 112 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/06(金) 08:45:14 ]
- >>111
否定疑問文だから、英語で答えるなら "No" が正解だろ。
- 113 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/06(金) 10:24:18 ]
- >>110
はい。
- 114 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/06(金) 10:37:46 ]
- >>111-113
Thank you all. 知恵と勇気と愛でなんとかしてみる
- 115 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/06(金) 18:30:00 ]
- 否定疑問文に
「んなことない」みたいな答え方はどうしたらいい?
- 116 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/06(金) 18:35:30 ]
- >>115
■スレッド立てるまでもない質問スレッド Part112◆ academy4.2ch.net/test/read.cgi/english/1136133816/
- 117 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/06(金) 18:42:23 ]
- 112は最近英語を知った厨房にすぎない
- 118 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/06(金) 19:12:12 ]
- >>115
Yes. と答えればいいだけ。
- 119 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/06(金) 19:39:41 ]
- >>115
「んなことない」= "There is no such Japanese zither."
- 120 名前:名無しさん@お腹いっぱい。 [2006/02/08(水) 18:38:37 ]
- @
- 121 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/02/08(水) 19:42:26 ]
- ウナコーワ足んない
- 122 名前:名無しさん@お腹いっぱい。 [2006/04/12(水) 02:41:13 ]
- 深夜上げ
- 123 名前:名無しさん@お腹いっぱい。 [2006/08/22(火) 16:18:15 ]
- ウムムム
- 124 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/11/03(金) 09:37:20 ]
- 同じ文字が3文字連続していたら表示したいのだが
- 125 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/11/04(土) 02:04:43 ]
- >>124
pc8.2ch.net/test/read.cgi/unix/1039165754/600
- 126 名前:名無しさん@お腹いっぱい。 mailto:age [2006/11/14(火) 20:28:59 ]
- grep, sed, awk
www.shuwasystem.co.jp/books/wwwsrch/cgi-bin/content/794/index.htm この本ってどうですか? 単なるマニュアル以上の情報は載ってる?
- 127 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/11/14(火) 20:59:20 ]
- このシリーズはなんとなく印象が悪いので手にとってないな。そういえば。
- 128 名前:名無しさん@お腹いっぱい。 [2006/11/18(土) 10:13:03 ]
- 教えてください。
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 ]
- >>128
sed 's/\(...\)\(...\)/^\1,\2/' file1.txt | egrep -f- -v aaa.csv
- 130 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/11/18(土) 12:30:05 ]
- >>129
突っ込みだけでスマン。それだと、 111,222999999999,333,444 なんていうのがaaa.csvにあると、これも削除されるぞ。 数字の桁数が自由か固定かあいまいな>>128がいけないんだが、 sedの置換先は /^\1,\2,/ みたいなんの方が安全と思う。
- 131 名前:名無しさん@お腹いっぱい。 [2006/11/18(土) 20:48:36 ]
- >>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 ]
- >>131
仕事で必要ならコンサルタントを雇いなさい。
- 133 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/11/19(日) 01:09:53 ]
- perl かなんかで書いちゃった方が早いよ。
- 134 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/11/19(日) 07:09:03 ]
- sed,awk=perlかなんか
- 135 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/11/28(火) 22:11:41 ]
- 職場のマシン、perlが入ってなかった・・・ orz
- 136 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/11/28(火) 22:52:45 ]
- この場合は、sedよりawkなんかな?
awkで書いてスピードアップのためのawkccしてしまうとか。
- 137 名前:名無しさん@お腹いっぱい。 [2006/12/07(木) 00:21:57 ]
- ご存知でしたら、教えてください。
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 ]
- >>137
awk -f test.awk -v HENSU=${HENSU} じゃね? 確認はできんが
- 139 名前:名無しさん@お腹いっぱい。 [2007/02/04(日) 08:46:50 ]
- ある文字列を
現在時間+引数 に置換したいのですが、どのようにすればいいですか? perlを使えば簡単なんだけど、職場のマシンでperl が入ってなかった(汗) ちなみに、sed とawk は使えるみたいです。
- 140 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/02/06(火) 00:47:03 ]
- >>139
引数によるけど、dateコマンドが使えてたら、OKでは。 $ date +%R 00:45 $ date --date '6 min ago' +%R 00:39 という感じで引数を与えるといけると思う
- 141 名前:名無しさん@お腹いっぱい。 [2007/02/11(日) 21:34:20 ]
- 入力ファイルを書き換えることはできる?
% sed 's/ABC/abc/' input.txt > output.txt よくある上のようなプログラム(と呼ぶのかな?)で、 出力をoutput.txt じゃなくてinput.txt のファイル自身を書き換えたいんだけど、可能かな? つまり、余計なファイルは出力させたくないんだよ。
- 142 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/02/11(日) 21:46:12 ]
- >>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 ]
- >>142
情報サンクス a. の方法を用いました
- 144 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/02/11(日) 22:27:47 ]
- 問題解決したようだけどこぴぺして編集
・-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 ]
- >>144
まとめ乙
- 146 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/02/26(月) 05:04:17 ]
- あってもなくてもいい追加
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 ]
- 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 ]
- 仕事で root してる人に質問です。
皆さんどれぐらい仕事で sed スクリプト書いてます? スクリプトの後々のメンテナンスと、既に周囲に読める人があまり 居ないこととを考えると、s での置換以外では perl を使うか、そ うなったらもう全部 perl にした方がいいのかなと最近思ったりし ます。 6行の sed スクリプトを書いたのですが、コメントが 8 行になっ てしまって。。。
- 149 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/17(火) 00:51:04 ]
- sedで複数行書くのは犯罪だ。awkで書こう
- 150 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/17(火) 00:55:39 ]
- そんなん読めないやつに管理まかせちゃいかんよ。
- 151 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/18(水) 23:42:12 ]
- >>148
すぐに読めなくても、それがsedのスクリプトであることを書いておけば、 perlを使えるひとならちょっとの手間で読めるようになるでしょ。 そうでなければ>>150ということに。 それから、6行のスクリプトのコメントが8行になっても、それはそれでいいじゃないか。
- 152 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/19(木) 01:05:48 ]
- sedの複数行は本当に頭痛がしてくる。
perでlさえ可読性悪いと言われてるのにその比じゃない。 個人的趣味以外で書いてはいけない
- 153 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/21(土) 01:38:29 ]
- sed のコードのそばに、
それを perl なり awk なりで書いたものを コメントとして残せば ・可読性→クリア ・コメント行数→クリア ・メンテ→工数倍w
- 154 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/21(土) 03:10:13 ]
- s2pでいいじゃん、とかおもったりおもわなかったり
- 155 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/08(火) 00:15:31 ]
- sedで千行あるファイルの
100行目から150行目を 抜き出すには どうしたらいいですか
- 156 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/08(火) 00:17:32 ]
- sed -ne "100,150p"
- 157 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/08(火) 11:04:38 ]
- sed -n 100,150p
- 158 名前:名無しさん@お腹いっぱい。 [2007/06/04(月) 20:43:16 ]
- 単語の置換をしたいんだけど、どうしたらよいでしょうか
具体的な例で言うと、あるソース中の int を char に全置換したい んだけど 単純に sed "s/int/char/g" だと printf まで変わって しまうから それは避けたい。 「単語」の条件は 英数字+アンダースコア (\w+) であること。 これ絶対FAQだと思うんだけど、 「sed 単語 置換」 で検索しても 答にたどり着かなかったのですよ。 困った。
- 159 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/04(月) 21:26:42 ]
- perl -pe 's/\bint\b/char/'
- 160 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/04(月) 21:37:31 ]
- >>159 アフォか
正解: sed 's/\<int\>/char/g'
- 161 名前:158 mailto:sage [2007/06/04(月) 22:15:45 ]
- >>159
ありがとうございました! うまくいけました。
- 162 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/04(月) 22:20:07 ]
- \< \>で思い出したけど、HP-UXのgrepではこれ使えんのだよな。
同じregexpライブラリを使っているなら、sedでも使えんな。
- 163 名前:159 mailto:sage [2007/06/04(月) 23:51:11 ]
- スレタイ読まずに書き込んで感謝されちゃったよ
こういうのを いたたまれない気持ち っていうのかな
- 164 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/01(日) 11:49:33 ]
- 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 ]
- 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 ]
- 下記のように、置換する文字に変数って使えないんでしょうか?
設定ファイル100個飛ばしてしまったorz forでループして、一気に変えたいんですが、$mlとそのまま置換されて しまいます。このままだと、全部手がきです(T.T) どなたかお助け下さい。 ml=hoge sed 's/$ml/foo/'
- 167 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/03(火) 18:51:10 ]
- >>166
それはsedじゃなくて、シェルスクリプト側の話だね。 ' ' じゃなくて " " を使う。 sed "s/$ml/foo/"
- 168 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/03(火) 19:17:43 ]
- そしてmlが"/"を含んでいて破滅する。
- 169 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/03(火) 19:30:17 ]
- ↑
できました!(T.T) ありがとうございました。一時は徹夜を覚悟しました。 本当に助かりました。ありがとう!
- 170 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/09(月) 22:52:03 ]
- >>168
まさにそれ。 やりたいのは、特定の文字列を 現在のディレクトリ位置に置換したいということなんですが、 シェルスクリプトで sed s/hoge/$PWD/g < file1.txt > file2.txt と書くと、エラーになってしまいます。 ($PWDが/を含んでいるから) だれかうまいやり方わかりませんか?
- 171 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/09(月) 22:54:37 ]
- sed "s|hoge|$PWD|g" < file1.txt > file2.txt
- 172 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/09(月) 23:43:40 ]
- >>171
はやっ!ありがとー! でもごめんなさい、実は明後日まで試せる環境がないので、 また試せたら報告に来ます。
- 173 名前:名無しさん@お腹いっぱい。 [2007/07/12(木) 20:37:34 ]
- sedでラベルを1行スクリプトに組み込むのは無理ですか?
sed '/^$/!{N;};/^$/{s/\n //g;} Nが終わったあとにスクリプトの最初に戻したいのですが美味くいきません・・・
- 174 名前:名無しさん@お腹いっぱい。 [2007/07/12(木) 21:01:50 ]
- 【参院選】民主党から、在日コリアンの期待背負った金氏(民団幹部)が立候補…在日参政権訴え
news22.2ch.net/test/read.cgi/newsplus/1184227903/l50
- 175 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/12(木) 21:55:25 ]
- >>173
普通にできるけど。:label; hoge; b label みたいに。
- 176 名前:170 mailto:sage [2007/07/12(木) 23:18:53 ]
- 報告おくれましたが、無事できました。
本当にどうもありがとう!
- 177 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/14(土) 03:55:18 ]
- >>173
-e >>175 普通じゃない
- 178 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/14(土) 09:07:49 ]
- >>177
>>173 の質問読み直せ。-e で連結する話とは違うぞ。 >>175 が正解。たぶん、>>173 はラベルの後のセミコロン忘れてできなかったんだろう。
- 179 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/14(土) 09:12:01 ]
- 省略せずに結果を書くと、
sed ':label;/^$/!{N;};b label;/^$/{s/\n //g;}' ↑な。これで何をやりたいかは知らんが。
- 180 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/14(土) 13:40:28 ]
- >>178
ラベルの後に続けて書けるのはGNU含む一部のsedのみ。 だから普通じゃない。 普通はラベルごとに切って -e で繋ぐ。 sed -e ':label' -e '/^$/!{N;};b label' -e '/^$/{s/\n //g;}'
- 181 名前:名無しさん@お腹いっぱい。 [2007/07/19(木) 11:31:07 ]
- タブ文字(0x09)だけをカンマに置換する方法はありますか?
バージョンはGNU sed の 3.02です。
- 182 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/19(木) 11:46:36 ]
- 普通に sed 's/\t/,/g'
- 183 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/19(木) 12:11:34 ]
- >>182
3.02は\tを使えません
- 184 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/19(木) 12:14:25 ]
- >>181
普通にタブ文字を入れる。
- 185 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/19(木) 12:16:24 ]
- 普通に sed 's/ /,/g'
タブのところは、シェル上なら Ctrl-Vに続けて入力。 シングルクォート必須。 なお、上の sed をコピペしても、TABが表示上で変換されてるので動かないと思う。
- 186 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/19(木) 13:25:58 ]
- >>184
T=`echo -ne "\t"` sed -e "s/$T/,/g" で出来ました。 ありがとうございました。
- 187 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/19(木) 13:31:46 ]
- >>186
そんなことしなくても、普通に >>185 でできるわけだが、、 何をわざわざ大変なことしてるだよww
- 188 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/19(木) 13:35:52 ]
- >>185 では動きませんでした。よく知りもせず、確認もせずに回答しないでください。
- 189 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/19(木) 13:41:02 ]
- >>187
あとで自分のシェルプログラムを読むときに 見えないタブコードのままだと誤解をしそうだし Ctrl-Vという入力方式が使えない端末もあるので あえて大層に書きました。
- 190 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/20(金) 15:25:43 ]
- 改行が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 ]
- >>190
普通に sed 's/$/\r/'
- 192 名前:190 mailto:sage [2007/07/20(金) 18:19:11 ]
- 出来ました。
- 193 名前:名無しさん@お腹いっぱい。 [2007/07/21(土) 00:53:54 ]
- おお、ちょうどいい!もれも似たようなことで
CR/LFを<BR>にしたかったw dクスでつ190-191
- 194 名前:名無しさん@お腹いっぱい。 mailto:sega [2007/08/08(水) 19:34:32 ]
- 正規表現にマッチした文字列だけを出力したい というとき
たとえば文字列の前の方の数字だけ取り出すときは sed -n "s/^\s*\([0-9]*\).*$/\1/p" みたいに 正規表現にマッチした全体をマッチした部分で置換する ようにやってたのですが、いちいち置換するのは 格好悪いので 部分\1だけ出力するような格好いい書き方ありませんか?
- 195 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/09(木) 00:53:55 ]
- perl -nle 'print $1 if /\b(\d+)/'
- 196 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/09(木) 03:14:20 ]
- >>194
GNU grep の -o オプションを使う。 ほかの grep だったらごめんなさいw
- 197 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/09(木) 13:19:08 ]
- sedスレのつもりだったんだけど、まあいいや。ありがとん。
- 198 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/16(木) 23:03:21 ]
- あるテキストファイルの1行目〜最終行の1000行前までを
取り出したいのですが、どのようにすればよいでしょうか? (ちょうど tail -n 1000 tmp.txt で取り出せない部分を 簡単に得たいのですが)
- 199 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/16(木) 23:07:04 ]
- awk '{a[NR]=$0}NR>20{print a[NR-1000]}'
- 200 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/16(木) 23:08:31 ]
- まちがえた。
sedでやっても美しくならないから、awkで awk '{a[NR]=$0}NR>1000{print a[NR-1000]}'
- 201 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/17(金) 08:48:47 ]
- sed -n '1h;1!H;1001,${g;P;s/[^\n]*\n//;h}'
- 202 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/17(金) 12:49:09 ]
- sedでやらなきゃいかんの?
- 203 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/17(金) 13:44:34 ]
- >>202
sedスレなので
- 204 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/17(金) 14:06:45 ]
- なんでsedスレを選んだんだろ。
- 205 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/17(金) 15:15:15 ]
- そこにsedがあるから
- 206 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/17(金) 21:24:35 ]
- >>200
>>201 レスありがとうございました。大変助かりました。 今回はawkを使おうと思いますm(__)m >>202 すみません、sedを覚えたての初心者なもので・・・
- 207 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/21(火) 03:25:33 ]
- sed -n ':b;1001,${P;N;D};N;bb'
詰め
- 208 名前:名無しさん@お腹いっぱい。 [2007/09/06(木) 11:55:22 ]
- 下のような行があったとして
command, --いろいろなコメント command, だけ残して、--いろいろなコメント(--から後ろ)を全部削除 したいのですがどうすれば良いんでしょうか? 本を読んでもよくわかりません。どうかお助け下さい。
- 209 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/06(木) 12:02:37 ]
- sed 's/--.*//'
- 210 名前:208 mailto:sage [2007/09/06(木) 12:05:26 ]
- 消えました!
ありがとうございました!>>209 ほんと助かりましたです。
- 211 名前:名無しさん@お腹いっぱい。 [2007/09/06(木) 13:04:52 ]
- 質問ばかりで恐縮なのですが、もうひとつ質問があります。
line...$ な行があったとして、^line を見つけた時に、下のようにおしりに HOGEな文字列を追加したい場合はどうすれば良いのでしょうか? line... HOGE$ ほんと、勉強不足で申しわけありません。オライリー本を片手にやってる のですが、どうしてもわかりません。
- 212 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/06(木) 13:12:43 ]
- >>211
sed '/^line/s/\$$/ HOGE$/' address について調べれ。
- 213 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/06(木) 13:31:20 ]
- >>211 の $ は文字じゃなくて、正規表現の $ の意味ではないのかと
- 214 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/06(木) 14:15:56 ]
- >>212-213
ありがとうございました。 sed '/^line/s/$/ HOGE/' でうまくいきました。addressについても勉強してみます!
- 215 名前:名無しさん@お腹いっぱい。 [2007/10/07(日) 16:15:05 ]
- 仮ファイルを使わずに
入力ファイル自身を書き換えることは出来ますか?
- 216 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/10/07(日) 16:58:58 ]
- -i
- 217 名前:名無しさん@お腹いっぱい。 mailto:sega [2007/10/11(木) 01:21:12 ]
- //exec($command,$arg);
とコメントアウトされた行をアンコメントしたいんだけど sed 's/\/\/(exec\(\$command,\$arg\);)/\\1/' -i hoge.php とかやっても思ったとおりに置換されない (とか$とか/とかをうまくエスケープできてないだけなのか どうなのかがよくわかんないんだけど、どこが間違ってる?
- 218 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/10/11(木) 01:30:55 ]
- sed -e 's@//\(exec(\$command,\$arg);\)@\1@'
- 219 名前:名無しさん@お腹いっぱい。 [2007/11/11(日) 11:05:40 ]
- 教えて下さい。
例 12345kkk6789 23456kkk4321 32456kkk9876 のようなテキストファイルが複数あり、 各行のkkk以降(kkkも含めて)を削除したいです。 1日考えてダメだったので、だれかお助け願います。
- 220 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/11(日) 11:11:26 ]
- sed -e 's/kkk.*//'
- 221 名前:名無しさん@お腹いっぱい。 [2007/11/11(日) 13:48:54 ]
- ありがとうございます。
- 222 名前:名無しさん@お腹いっぱい。 [2007/12/19(水) 03:19:13 ]
- sed -e '500,$d' の500の部分を変数にすることって出来ますか?
例えば、sed -e '$no,$d' みたいな感じで実行するとエラーになって困ってます。
- 223 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 03:39:03 ]
- >>222
シングルクォートをダブルクォートに変えてみな。
- 224 名前:222 mailto:sage [2007/12/19(水) 03:55:03 ]
- >>223
どうもです。 sed -e "$no,$d"という風に変更してみましたがダメでした… そもそも変数を指定することが出来ないというオチなのでしょうか?
- 225 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 04:23:23 ]
- >>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 ]
- >>225
エスケープしたら一発で成功しました! 225さんの説明を読んで、また一つ理解が深まりました。 どうもありがとうございました!
- 227 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 07:23:30 ]
- >>215
>>144
- 228 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 13:56:00 ]
- 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 ]
- 何をどう置換したいのだ?
sed のスクリプトのほうも示してほしいのだが
- 230 名前:228 mailto:sage [2007/12/19(水) 18:53:01 ]
- a.txtの内容
---------- aaa bbb aaa bbb ---------- このa.txtを ---------- eee fff aaa bbb ---------- ↑のように置換したい。 sed -i 's/aaa\nbbb/eee\nfff/' a.txt これで出来ると思ったのですが出来なかったので。 どうやったらできますか?
- 231 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 19:02:25 ]
- -e 's/^aaa$/eee/' -e 's/^bbb$/fff/'
- 232 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 19:25:27 ]
- >>231
アフォかw
- 233 名前:228 mailto:sage [2007/12/19(水) 19:47:13 ]
- 訂正
a.txtの内容 ---------- aaa bbb ccc bbb ---------- このa.txtを ---------- aaa bbb ccc ddd ---------- ↑のように置換したい。 この文字は何行目にあるか不明だとして 一番下のbbbをdddに置換することはできますか?
- 234 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 20:03:31 ]
- >>233
sedじゃなきゃいかんの?
- 235 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 20:06:41 ]
- >>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 ]
- >>234
sedじゃなくてもいいですけど、置換できますか? >>235 エラーがでました。 extra characters at the end of q command
- 237 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 21:07:06 ]
- >>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 ]
- >>236
sed じゃなくてもいいならこっちで。 シェルスクリプト総合 その9 pc11.2ch.net/test/read.cgi/unix/1187130302/
- 239 名前:228 mailto:sage [2007/12/19(水) 21:26:39 ]
- 1行で出来ませんか?
- 240 名前:228 mailto:sage [2007/12/19(水) 21:30:49 ]
- >>238
わかりました。ありがとう。
- 241 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 22:06:56 ]
- sed -n '${p;q;};:s;N;s/ccc\nbbb/ccc\nddd/;P;D;b s'
- 242 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/19(水) 22:24:14 ]
- >>241
できました。ありがとう。
- 243 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/05(土) 05:42:11 ]
- sed -n "m(_ _)m|-_-|(っ゚ロ゚)っ"
- 244 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/05(土) 17:14:31 ]
- sed: 1: "m(_ _)m|-_-|(っ゚ロ゚)っ": invalid command code m
- 245 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/30(水) 03:09:39 ]
- ( を に痴漢したいんだけど
$ cat hoge | sed -e "s/\\\(/ /" ってやってもなんか駄目っぽい なんで?
- 246 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/30(水) 05:08:34 ]
- >>245
シングルクォートならどうよ? $ sed -e 's/(/ /' hoge
- 247 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/30(水) 10:17:02 ]
- sedはバックスラッシュいらない。
グループ化したいときはいるけど。
- 248 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/30(水) 23:45:42 ]
- >>246
シングルクォートならできるんだけど、なんかこう どうしてもダブルクォートでやりたいお年頃なんです
- 249 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/31(木) 01:10:52 ]
- 大人になりましょう
- 250 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/31(木) 15:44:59 ]
- ある単語(例:foo)をhoge-"
と置換したいんですが、 sed -e "s/foo/hoge-"/g" だと当たり前だけどエラーが出ます・・・。 ダブルクォートとかって、どうやって指定したらいいんでしょう?
- 251 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/31(木) 15:54:58 ]
- sed -e "s/foo/hoge-\"/g"
- 252 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/31(木) 16:18:41 ]
- >>251
おお!ありがとう!!できましたヾ(゚∀゚)ノ しかし>を認識しなくなってリダイレクトが使えなくなった・・・。 Winに組み込んだSedだからなのかなぁ・・・。
- 253 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/02/02(土) 11:55:41 ]
- winのコマンドラインパーサーは腐っているから-fで渡したほうが精神的によろしい。
- 254 名前: ◆b/iUrOax9k mailto:sage [2008/04/13(日) 23:43:03 ]
- お邪魔します^^
あのスレの>>144さんありがとうございます 私の目標と現状を書いておいたほうが良いのかな ★Aタイトル一覧表を作る(”タイトル”の部分はそれぞれ対応したファイルにリンクを貼る) ★Bタイトル一覧表に対応したデータファイルをタイトルの数だけ作る 但し★Bを作成する前に全てのデータを1ファイルに集約した後ソートして 重複チェック、データ欠如のチェックしたいです ・データファイルはPC内にある既存のファイルから必要な部分を抽出して作成する ●必要な部分● @<title>〜</title>(元ファイルは1行の場合と2行なたは3行の場合がある) A<object 〜 /object>(元ファイルは1行の場合と2行なたは3行の場合がある) B<span>〜</span>(備考欄に使おうと自分で全てのファイルに付け足しました現在はタグだけです) (元ファイルから抽出と新規作成にタグだけ付け足しても同じ内容になります。どちらでも構いません) 他のところで教えてくれた方が居て★Aの作成と、★Bの@ABの個別取得できています ★Aの一覧表からテスト作成のリンクファイルに飛ぶことも出来ています ★Bのデータファイルを作れないで居ます 私のレベルなんですが他の言語スレで呆れ返られるくらいの初心者で 単語の名前や意味は殆どわからないです 結局、自分のやりたいことはファイル操作であることが最近知りました それまでの経緯でHTMLとジャバスクリプトと正規表現の本 それからperlの本は自宅にあります sed全くわかっていないです^^; 単語の意味がわからない事だらけで意味を調べて廻る事でせいいっぱいで なかなか前進しないままです とり急ぐわけではないのですが もしよろしければお時間の都合の良いときだけで結構ですので教えて頂けましたら幸いです どうぞよろしくお願い致します
- 255 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/14(月) 01:07:47 ]
- >>ALL
Win版のsedの話なんだけど、sedスレがUNIX板とLinux板に しか無いので誘導させてもらったけどいいっすか? >>254 PerlやJavaScript(JScript)がわかるなら、そっちでやったほうがいいね。 マッチングさせたい物が1〜3行に渡るって所でモレにはわからん。 できるかもしれないが複雑になるような希ガス
- 256 名前: ◆b/iUrOax9k mailto:sage [2008/04/14(月) 01:17:30 ]
- 144さん
ありがとうです お声かけて頂いただけで嬉しかったです まだ解説本を購入して10日程です 全部読んでいないのでどこまでできるかわかりませんが 自力でもう少し頑張ってみます 本当にありがとうございました^^ お疲れのところすいませんでした
- 257 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/14(月) 23:09:24 ]
- よく流れがわからんが
やりたいこと全部を一気に教えてもらうとかせずに 知りたいポイントをしぼって一つずつ質問すれば答えてくれると思うよ。
- 258 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 03:56:38 ]
- 各板で暗黙のルールみたいなのがあるんだろうか
やりたいことは先に書いた通りなんだけど プログラム板というところで初めはHTMLの読み込み方を聞いてみたんですよ そしたら「何がやりたいのかよくわからん。もっと詳しく。」ばかりレスが付くんです それで私が「ファイルの読み込みです」と返事をすると「具体的にここに書かないとわからない」 これを繰り返しているうちに「後出し条件だ」とか「それはプロにしか出来ないレベル」とか 結局何も返答しないのに威張ってばっかり。 まるで解答者(のフリをして答えない)人の相手をするばかりで全く進まない 解答者らしき人を問い詰めていったら 私のような人間を探してネタをパクッタリいい人を装いながら客として誘導したり 最初から教える気は全く無いって事でした。無駄な時間ばかり過ぎていくので 板を変えてプログラマー板ってとこへも行ってみたのですが そこでも「もっと具体的に」「わからん全部書け」「質問以前に問題あり」 散々小ばかにされては解答は無し。 やはり同じような輩が蔓延っていました 2chで教えて貰おうとするのが間違っているのかもしれません 自分は今までパソコンソフトには全く興味が無かったので こういう汚い連中が露骨に威張り倒してるところがあるとは知りませんでした 他の板でもひどい言葉はよく見かけますが 大体はまともな意見が多いので誰かがフォローしてくれたりしますが パソコン関係は解答者が圧倒的に優位なようだ 「只で教えてるんだぞゴルァ」とかも言われました(一度も解答しない人にw) 只で教えたくないならスルーでいいのではと言い返したら 質問者としてなって無いとか言い出す始末 そういうことでまとめて書いておいたんです 解答者の振りをする連中は答えないのに質問者をいじって遊んでるんです でわ
- 259 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 06:30:34 ]
- >>258
そのとおりです。 回答が欲しい場合はエスパースレへ ↓ 【エスパー】くだ質【エラーメッセージ不要】(1) pc11.2ch.net/test/read.cgi/unix/1207042632/
- 260 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 06:40:21 ]
- うわぁ…これはひどい。
書き込む前に自分のレスを読み返してないのか? 全然まとまって無いし、誤字脱字だらけ。 スクリプト書く前にやりたい事を 簡潔な日本語で書く練習をした方が良い。 いや、マジで。
- 261 名前:255 mailto:sage [2008/04/15(火) 07:51:22 ]
- >>258
暗黙のルールという訳じゃないけどできるだけ楽して、人から聞きだそうという態度の人は煽られるね。 あなたにそういうつもりは無くても例えば、せっかくこのスレまで誘導したのに、 >sed全くわかっていないです^^; >もしよろしければお時間の都合の良いときだけで結構ですので教えて頂けましたら幸いです これだけ見ると、1から10まで教えろって言ってるように見えるよ。 色々なスレを見ればわかるが、質問をして、あなたのように煽られる人と、 煽られない人がいるが、その違いがわからないのであれば、 「2chで教えて貰おうとするのが間違っているのかもしれません」という事。
- 262 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 11:53:57 ]
- >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 ]
- みんなレスありがと
答えてくれたことにお礼を言うのは当たり前だと思うんだけど 今までのスレは答える前から上から目線で結局答えてくれない この人たちは解答を知らないのでは?と思うようになったんですよ 昨日も私が質問しているように見えるので他の質問に答えれないだろ あの質問もお前だろって言うので 「それ自分じゃないよその質問には答えてあげればいいよ」とかやりあってたら その質問者が現れた 当然のように解答者にはペコペコ謝ってる(これからも解答してもらうために) この先、解答は期待できない私には一言もなし 初心者用の解説本をヨンから来いと言われるんだけどファイル操作は初心者用ではわからないようだ 手持ちのperlは3冊ある(超初心者用、初心者用、命令逆引き辞書) perl解説本ではファイル操作の解説に至るまでにCGIの解説ばかりだ やっとファイル操作の解説まで読み進めたら5ページほどで終わってるorz perlでファイル操作は中級レベルの解説本を買わなければいけないのかと思うようになった 他の言語を調べてみた CとかjavaとかAjax 初めのほうからファイル操作は解説している ただ解説に使っている言葉自体が命令を使って解説しているので自分には全く理解不能だorz >>262 それ以外にも軽く10スレ以上は廻ったよ それで何か言語を覚えなきゃダメだなってわかったんだ
- 264 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 14:28:27 ]
- 結局、私の言いたかったのは答えれないのに答える振りしてまで
優位に立ちながら出てこなくてもいいのではないのかってこと どうせ答えないのにいかにも「解答欲しけりゃぺこぺこするのは当たり前だろカス氏ね」的な態度とって それで解答しなくても解答者を装ったほうがいいってことなのだろか 何もわからないことまでしゃしゃりでてこなくてもってことです 偽解答者なら私でも今からすぐにできそうだw
- 265 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 14:34:59 ]
- ちなみに某スレでdieがわかんないような逆引き辞書だよ
って記載した後に解説本に載ってたサンプルが動かなかったので なぜエラーになるのかわからないって書いたら 難しいことには答えない でも何か答えなければって強迫観念でも沸き起こるのか 解答者を装いながら勉強するのも手段なんだろうけど なにがなんでもしゃしゃり出てくるのは過疎っているからだろね 悪循環板だ
- 266 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 18:54:33 ]
- >>261の意味がわからないようだね。
>何もわからないことまでしゃしゃりでてこなくてもってことです あんたが自由に質問をしていいように、他の人間もそれに対して自由にレスを付ける事ができる。 「わからないなら、しゃしゃり出てくるな」というのは単なるあんたの都合でしょ? そうでなければ、そいつらを自分より低レベルだと見下したいのか。 そういう事をされて、このスレでクダを撒き、関係の無い人に八つ当たりをしているあんたは、 そいつらと同類という事に何故気付かない? もう一つ。「自分」と「2ちゃんねる」のやり取りだと思っているようだけど、 レスをしているのは「個々の人間」だ。
- 267 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 18:56:42 ]
- あれだろ、渋谷までいきたいんですが教えてください。
って質問して 電車で、とかタクシーで、とか徒歩で、とか教えてくれてるのに 切符の買いかたがわかりません、とか タクシーって何ですか?とか 徒歩って何って読むんですか?とか 馬鹿な質問してるから飽きれられてるんだろ。
- 268 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 19:02:52 ]
- 人生相談ならよそでやってくんないかな。
sedと関係ない。
- 269 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 19:43:39 ]
- >>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 ]
- >>263
>それで何か言語を覚えなきゃダメだなってわかったんだ わかったけど勉強する気が無いわけ? 次から次へと言われるがままにPerl、JavaScript、サクラエディタ、awk、sedと 目先で楽できそうな物を追っかけてるから目的が達せられないんだ。 >初心者用の解説本をヨンから来いと言われるんだけどファイル操作は初心者用ではわからないようだ 参考書として勧められてない「独習Perl」が手元にあるが丁度半分まで読んだ所で扱われているが。 努力をしないで結果を得たいなら、それなりの報酬を出して人を募集するか、 質問専用掲示板で、具体的にサンプルを出し、これこれこーゆースクリプトを 書いて下さい、と依頼するかのどちらか。 okwave.jp/
- 271 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 21:47:06 ]
- sedは数年でなくなる
- 272 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 23:16:01 ]
- 何いきまいてんの?
パソコンソフトって結局ゲームソフトみたいなもんでしょ その操作を知ってるからって威張るもんじゃないよね 自分で作ったソフトじゃないんだから ゲームソフトの使い方だったら攻略本としてでるんだろうけどね ソフトの使い方を先に知ったからって偉いと思ってんならスルーすればいいじゃん メモ帳やペイントみたいなもんで使い方覚えたらどってことないと思う いざやり始めた人間をいじくって遊ぶなんて恥ずかしいね
- 273 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 23:19:39 ]
- やぁやぁ我こそはsedの達人なり〜〜
そやって表歩いてみ 誰か「キミ凄いんだ」と声でも掛けてくれたらいいねw 我こそはプログラマーなり〜〜〜〜腹いてー
- 274 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 23:39:00 ]
- 高校、大学と印刷関係の工場でバイトしてたんだ
当時職人と呼ばれる連中はタバコくわえながら あごで指図しては怒鳴りあげたりやりたい放題 その頃何も知らなかったので「○○さん技術あるから仕方ないよね」みたいな空気があった ん? ちょっと待て! 機械の操作だけじゃん 今や家庭用のプリンターでも当時の技術を遥かに超えている 車にの運転とかもそうだよね 昔は女性が免許持って運転してると目立つしなんかあったら「女の運転わ・・」とか言われたもんだ 今の乗用車の性能で言えば当時のレーサーを余裕でぶっちぎれますw そんな感じで機械やソフトを開発してるのは偉いと思うけど 操作で自慢されても5年後にはもっと簡単で3日でものになるソフトが出てるかもしれないよ
- 275 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 23:49:36 ]
- 以後放置で。
- 276 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/16(水) 03:11:06 ]
- あらら、自分の非を指摘されて、それが正しいもんだから逆切れしちゃった訳ね。
まともに反論できないからって、お前の母ちゃんでべそーは無いよな(笑)
- 277 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/16(水) 04:20:47 ]
- 自分で作ったソフトでも無いのにw
使い方知ってるくらいでそこまで威張るか普通? そんなことぐらいで天狗になる奴リアルではいないよw ゲームの上手い子供が威張り倒してるのとどう違うんだ??? パソコンソフトの使い方ぐらいでこんなに意地になる連中マジで知らんわw 教えたくなければ知らん顔してればいいのに何が何でも答えるんだね(解答以外はwwwww) 多分、実社会でもずれてんだろなー キミはた迷惑だと思われてるかもしれないよw 廻りよく見てみw
- 278 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/16(水) 04:32:41 ]
- 何このスレ?
- 279 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/16(水) 04:58:56 ]
- 「教えて君」の見本のような奴だな。
- 280 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/16(水) 05:24:34 ]
- おもちゃを上手く使いこなせたから自慢してるって程度じゃないな
頭小学生並みの幼児性w 上から目線が笑えるw こいつ 奴 プ 笑えるwww 言葉遊びできない奴は何やってもダメって典型
- 281 名前:名無しさん@お腹いっぱい。 mailto:age [2008/04/16(水) 05:39:44 ]
- これほどの逸材を埋もれさせておくのはもったいないから age とく
- 282 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/16(水) 05:48:41 ]
- # >>275がいいと思うんですが。
>>281 そういうことでしたら>>262に追加で、逸材ぶりがよく伝わるスレも。 pc11.2ch.net/test/read.cgi/php/1204488452/42-
- 283 名前:名無しさん@お腹いっぱい。 mailto:sega [2008/04/16(水) 17:32:10 ]
- これは壮大な釣りなのか?
一瞬、なりすましを疑ったが、>>262,282を見ると、まさに本人だよな。
- 284 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/15(木) 23:42:43 ]
- sedって文全体からある語句を置換するのは簡単だけど、
最初にマッチする語句だけ置換して後はそのまま出力しようとするとちょっと複雑になってしまうよね。 スクリプトの先頭に戻らない様なループを作らないといけない。
- 285 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/16(金) 00:20:54 ]
- >>284
遠まわしに「最初にマッチする語句だけ置換をする簡易な方法はありませんか?」 って聞いてるのか?それとも独り言ならチラ裏へ。
- 286 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/16(金) 11:39:13 ]
- % ( echo hogehoge; echo hogehoge ) | sed '0,/hoge/s/hoge/fuga/'
fugahoge hogehoge GNU sed に限るようだが。
- 287 名前:284 mailto:sage [2008/05/16(金) 21:22:18 ]
- >>286
レスサンクスです。ただ最初の0を1でやった場合はうまくいきませんでした。 s/hoge/fuga/ :loop p N s/.*\n// b loop 漏れの頭ではこんなのしか思い付きませんでした。 もっとスマートな方法があったら教えてください。
- 288 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/16(金) 21:36:55 ]
- >>287
/hoge/{ s/hoge/fuga/ :loop n b loop }
- 289 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/04(水) 19:06:03 ]
- /me ?
- 290 名前:名無しさん@お腹いっぱい。 [2008/07/07(月) 08:34:28 ]
- n文字目のxのみyに置換というのはどうすればいいですか
- 291 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/07(月) 08:36:46 ]
- n文字目のxとは、
行頭から(n-1)個の文字のあとに出現するx のことか? 行頭からn回目に出現するx のことか?
- 292 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/07(月) 09:42:38 ]
- >>291
参考までに両方ともお願い
- 293 名前:名無しさん@お腹いっぱい。 [2008/07/07(月) 12:09:14 ]
- 前者です
- 294 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/07(月) 13:30:25 ]
- >>291
後者ですが、念のため両者の場合について教えてください
- 295 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/07(月) 21:50:58 ]
- 行頭から4文字目のxをyに
echo xxxxxxxxxx | sed 's/^¥(...¥)x/¥1y/' 行頭から4個目のxをyに echo x-x-x-x-x | sed 's/¥([^x]*x[^x]*x[^x]*x[^x]*¥)x/¥1y/' とかとか? 4を変数にするのは漏れには粍
- 296 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/07(月) 23:32:28 ]
- ()ってのは条件になるん?
- 297 名前:290 293 [2008/07/08(火) 10:30:38 ]
- ありがとうございます
確かに.×4みたいに表現できたらかっこいいですが これで文句なしです!
- 298 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/08(火) 11:11:36 ]
- >>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 ]
- >>298
Solarisのsedじゃ動かんな。
- 300 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/08/29(金) 17:04:29 ]
- 01101,"0600031","ホッカイドウ","サッポロシチュウオウク","キタ1ジョウヒガシ","北海道","札幌市中央区","北一条東",0
↓ 01101,"0600031","ホッカイドウ","サッポロシチュウオウク","キタ1ジョウヒガシ","北海道","札幌市中央区","北一条東",0 この第5フィールドの半角英数だけ(2個有る場合もあり)全角にしたいのですが どのようにsedを作ればいいでしょうか?
- 301 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/08/29(金) 17:07:35 ]
- >どのようにsedを作れば
釣りポイントはここですか?
- 302 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/08/29(金) 21:15:26 ]
- その形式は、郵便屋の郵便番号データだろ。
エクセルか何かの一覧表をcsvに落としただけの代物だから そのままでは役に立たないよ。 そのままDBに格納し、専用プログラムで変換かけて正規化してる。
- 303 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/08(水) 23:13:50 ]
- aaa.hoge
bbb.hage ccc.foge とかいう文字列があって、*.hoge以外にマッチする正規表現って出来るのでしょうか?
- 304 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/09(木) 00:18:38 ]
- スレ違い。正規表現スレに池
- 305 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/09(木) 21:57:14 ]
- >>303
その文を素直に読むと、当該文字列にだけはマッチしない 正規表現と読めるが、書き込み子の心情を忖度すると、 sed 's/[a-c]{3}\.hoge/==matched==/' って事かな? まあ、[a-c]* でも、(aaa|bbb|ccc) でも、[[:alpha:]]* でも、 マッチする表現は無数に有るけど、(・・に、だけマッチする) を、求めているなら、そもそも*.hoge って見当外れだし、 要するに、何が知りたいのか良く分からん。
- 306 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/10(金) 17:29:18 ]
- >>305
> >>303 なるほど、ありがとうございます。
- 307 名前:名無しさん@お腹いっぱい。 [2008/10/27(月) 23:08:07 ]
- ファイル内の、スペース+改行をスペースのみに置換したいのですが、
どのように記述すればよいのでしょうか。 データ数が数十万行あるため、ファイルを全部読み込んでから 置換する方法では、容量がオーバーしてしまいました。
- 308 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/27(月) 23:26:18 ]
- >>307
Perl か何かで書いちゃった方が早いんじゃね?
- 309 名前:名無しさん@お腹いっぱい。 [2008/10/27(月) 23:29:29 ]
- >>308
環境上、Perlを使用することができないんです。 sedでは難しいでしょうか。
- 310 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/28(火) 00:02:57 ]
- 環境によって違うと思うけど普通の書き方じゃダメなのか?
s/ \n/ /g
- 311 名前:名無しさん@お腹いっぱい。 [2008/10/28(火) 00:07:58 ]
- >>310
自分の環境では、\nが認識されませんでした。
- 312 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/28(火) 02:53:50 ]
- >>311
OSの具体的な名前とかは出さないのな。 s/\ / /g では?
- 313 名前:312 mailto:sage [2008/10/28(火) 02:56:53 ]
- すまん。勘違いした。
sed はPerlと違って、入力したときに改行を取り除いてからパターンスペースに送るから、 そこで改行探しても見つかりっこない。 んで、出力時に自動的に改行は付くし、これを抑制する手段はない。 せめて awk使っとけ。Perlなくてもawkはあるだろ。
- 314 名前:312 mailto:sage [2008/10/28(火) 02:58:41 ]
- すまん勘違いしてた。
sedはPerlと違って入力時に改行を取り除くから、置換時に改行探したって見つかりっこない。 Nとかで次の入力を読んでくれば間に挟まるけど。
- 315 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/28(火) 03:19:55 ]
- おまえらマルチに親切だな
- 316 名前:名無しさん@お腹いっぱい。 [2008/10/28(火) 07:09:08 ]
- ありがとうございました。
sedでは難しそうですね。別の方法を探してみます。
- 317 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/28(火) 07:21:00 ]
- 微妙に変えてあるとこがうまいな。
- 318 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/28(火) 22:44:37 ]
- tr -d '\n'
- 319 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/28(火) 22:47:24 ]
- 良く読んで赤面しろw
>>318 >>307 「スペース+改行をスペースのみに置換したい」
- 320 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/28(火) 22:54:10 ]
- >>307
sed ' :again / $/{ N s/?n// b again } '
- 321 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/16(月) 16:23:57 ]
- sedの公式ホームページってないのでしょうか
awkは一応gawkがあって一応開発も続いているようですが sedはどのような状態なのでしょうか? いつまでたっても最短マッチを搭載しない理由もお教えねがいます。
- 322 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/16(月) 23:57:10 ]
- そういう機能を追加すると、既存のスクリプトが動作しなくなるから。
ポータビリティを失ってまで実装する必要がない。(それこそ、perlでもawkでも使えばいい)
- 323 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/17(火) 09:03:12 ]
- なるほど、参考になりました。
もし開発に参加できるなら参加したいと思っていたのですが そのような理由ならそういったときはperlやawkに頼る事にします。
- 324 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/18(水) 09:33:00 ]
- >>322
sedに正規表現perl互換モードを搭載すればいいだけなのにね
- 325 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/19(木) 18:21:24 ]
- GNU sedの-r みたいなので、perlモードがあればいいね。
- 326 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/19(木) 19:39:12 ]
- >>321
gnu sed 拡張している人たちがいるからそのあたりに乗ってみれば?
- 327 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/19(木) 20:18:08 ]
- onigsedじゃダメなのか?
つーか、perl -pe でいいじゃん。
- 328 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/24(火) 17:21:46 ]
- >>321
GNU sed なら www.gnu.org/software/sed/
- 329 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/27(金) 16:21:29 ]
- >>327
今度はsed互換ではないという
|

|