- 1 名前:sed@修業中 [03/11/03 08:26 ID:62bfq5Tp]
- Linux使ってるならsedあたりはサックって使えるようになりたい。
だけどなかなかまとまった日本語の解説がすくなくて苦労する。 ここで皆の智恵をだしつくして欲しい! 日本語解説サイト www-6.ibm.com/jp/developerworks/linux/010202/j_l-sed1.html www-6.ibm.com/jp/developerworks/linux/010216/j_l-sed2.html www-6.ibm.com/jp/developerworks/linux/010223/j_l-sed3.html 英語だとここからたどれる sed.sourceforge.net/index.html
- 89 名前:login:Penguin mailto:sage [2005/11/28(月) 23:09:25 ID:EcBnAVh1]
- >>88
捨て
- 90 名前:88 mailto:sage [2005/11/29(火) 02:04:37 ID:JFndx1yi]
- >>89
ありがd。そうみたいだね。実は自己解決してました。 man sedしてもわからなかったけどinfo sedしたら書いてあったよ(GNU sedね)。 「SED 教室 第三回」にもこうあった。 www.gcd.org/sengoku/sedlec/3.txt > SED は起動されるとまず、標準入力の最初の行をパターンスペースにコピーし >ます。この時点でパターンスペースの内容は「これは一行目だ。」になります。 >行末の改行コードは捨てられてパターンスペースの中にはありませんので注意し >てください。
- 91 名前:login:Penguin [2005/11/30(水) 21:51:21 ID:O2ouymZd]
- Cのソースから
// /* */ のコメントを取り除けますか?sedで。
- 92 名前:login:Penguin mailto:sage [2005/11/30(水) 22:18:12 ID:lIO05ZaP]
- >>91
できるよ。
- 93 名前:login:Penguin [2005/11/30(水) 22:43:30 ID:+mlzjm+U]
- >できるよ。
/* */ のように複数行に分かれている場合にもできますか?
- 94 名前:login:Penguin mailto:sage [2005/11/30(水) 22:44:24 ID:lIO05ZaP]
- >>93
うん。
- 95 名前:login:Penguin [2005/12/03(土) 04:22:17 ID:tqW1lQSk]
- 要するに,「/*」と「*/」を削除すれば?
- 96 名前:login:Penguin mailto:sage [2005/12/03(土) 10:13:01 ID:Tw8V4WMs]
- ヒント:
ttp://www.gcd.org/sengoku/sedlec/12.txt ---------- SED 教室 第十二回 「〜から〜まで、基礎編」 ----------
- 97 名前:login:Penguin [2006/01/22(日) 16:17:53 ID:IDyOrogG]
- SED
- 98 名前:login:Penguin [2006/02/24(金) 16:50:56 ID:cbN1qQJn]
- @@@
- 99 名前:login:Penguin mailto:age [2006/03/01(水) 17:51:55 ID:invzz+R5]
- Super Erectile Dysfunction
- 100 名前:login:Penguin [2006/04/12(水) 02:40:10 ID:TK6X7NqV]
- 深夜挙げ
- 101 名前:login:Penguin mailto:sage [2006/06/19(月) 18:24:21 ID:7hb+n6Th]
- 保守
- 102 名前:login:Penguin [2006/08/22(火) 16:17:23 ID:GMKE0Nda]
- むむむ
- 103 名前:login:Penguin [2007/04/18(水) 00:02:42 ID:znSq4roi]
- >>1
乙
- 104 名前:login:Penguin [2007/04/21(土) 20:59:54 ID:3cd3hhH7]
- sed -e 's/XX/VV/g'|rm -rf
パイプの概念すらしらん奴はこの板すらのぞかない方が君の為だ。
- 105 名前:login:Penguin mailto:sage [2007/04/21(土) 21:05:07 ID:Xv/Wu2nU]
- とりあえず、何をどうしたいのか、問題をはっきり定義してくれ。
そうすりゃ、見本スクリプト書いて説明してやるよ。 ややこしいことやるなら、ほんとはPerlのほうが使いやすいけど。
- 106 名前:login:Penguin mailto:sage [2007/11/23(金) 23:18:25 ID:jeG9bac3]
- 括弧そのものの削除ってどうやるの・・・
\( ってやっても expression エラーがでるんだけど・・・orz
- 107 名前:login:Penguin mailto:sage [2007/11/24(土) 09:54:12 ID:KS9aoT96]
- むしろ ( だけでいいはず
- 108 名前:login:Penguin mailto:sage [2007/11/26(月) 16:59:12 ID:BfF24vJW]
- 実装次第かも知れんが、\(〜\)がグループ化で()は普通の括弧文字って実装が割と多い気がするね。
- 109 名前:login:Penguin mailto:sage [2007/11/26(月) 18:40:27 ID:K1ODcPAV]
- BREとEREの違いですね。
GNUのsedなら、-rをつけるとEREになるから、 \(〜\)じゃなくて(〜)でグループ化になりますよ。
- 110 名前:login:Penguin mailto:sage [2007/11/27(火) 02:16:55 ID:ha+qq+GW]
- >>108
GNUの拡張を除けば、グループ化が ( と ) なsedはないんじゃないか?
- 111 名前:login:Penguin mailto:sage [2008/04/17(木) 05:57:23 ID:OFfDkpoC]
- 夢翔塾代表 逮捕後アリバイ工作 証人威迫容疑で福岡県警再逮捕 拘置中、男に依頼
特定非営利活動法人(NPO法人)「ハートランド夢翔塾(むしょうじゅく)」(福岡県大牟田市)代表の川野弘樹容疑者(36)=児童福祉法違反の罪で起訴=が、 塾生の少女=当時(16)=にわいせつ行為をしたとされる事件で、同県警は5日、拘置中に知り合った男と事件当日のアリバイ工作をしたとして、 証人威迫の疑いで川野容疑者を再逮捕し、大牟田市草木、飲食店従業員李永浩容疑者(32)を逮捕した。 調べでは、川野容疑者は大牟田署の留置場に拘置された際、別の事件で拘置されて同房だった李容疑者と共謀。 略式起訴で2月1日に保釈された李容疑者は同日夜、大牟田市内の川野容疑者の知人女性を訪ね、 「(わいせつ事件の)犯行時、川野容疑者と一緒にいたと証言してくれ」と、うそのアリバイ証言をするように強要した疑い。 両容疑者に面識はなく、留置場内で謀議していたという。川野容疑者は黙秘し、李容疑者は容疑を認めているという。 県警は5日、川野容疑者が昨年10月8日にも同市内の路上に止めた乗用車内で同じ少女にわいせつ行為をしたとして、 児童福祉法違反(淫行(いんこう))容疑でも再逮捕した。 ttp://www.nishinippon.co.jp/nnp/national/20080306/20080306_001.shtml 浜松・連続女性暴行:懲役20年を求刑 /静岡 浜松市の連続女性暴行事件で強姦(ごうかん)致傷などの罪に問われた同市中区北寺島町、 韓国籍の会社員、李正遠(イチョンウォン)被告(34)の論告求刑公判が4日、地裁浜松支部 (北村和裁判長)であった。 検察側は懲役20年を求刑した。 毎日新聞 ttp://mainichi.jp/area/shizuoka/news/20080305ddlk22040174000c.html 強制わいせつ容疑で逮捕 /福岡 26日、八幡東区石坪町、土木作業員、崔吉竜容疑者(32)を。 今月12日午後6時50分ごろ、門司区内の会社事務所に「トイレを貸してほしい」と 言って立ち入り、事務員の女性(32)に抱きつくなどわいせつな行為をした疑い。 前日にも事務所を訪れており、「強制ではない」などと犯意を否認しているという。 ttp://mainichi.jp/area/fukuoka/news/20080227ddlk40040511000c.html
- 112 名前:login:Penguin mailto:sage [2008/04/18(金) 01:44:25 ID:/C9YMQcQ]
- unix 板のアレがこっちに来たのかと思った。
- 113 名前:login:Penguin mailto:sage [2008/06/03(火) 06:01:17 ID:OIB6+9BR]
- >>110
できるよ。 以上。 はい、次。
- 114 名前:login:Penguin [2008/07/17(木) 19:01:07 ID:fSKuDDXe]
- head.logというファイルの先頭に「HOGEHOGE」という文字列を挿入しようとしています。
head.logの中身は ------- test test ------- という二段の文字列です。 最初に直接sedを用いて sed -e '1 s/^/HOGEHOGE\n/' head.log というコマンドで ------- HOGEHOGE test test ------- と表示することには成功しました。
- 115 名前:login:Penguin [2008/07/17(木) 19:02:47 ID:fSKuDDXe]
- ただ、シェルスクリプトを
---------------------------- #!/bin/sh echo "input word" read word sed -e "1 s/^/${word}\n/" head.log ---------------------------- のように書いて、wordにHOGEHOGEを代入してこれを実行すると ------- HOGEHOGE HOGEHOGE test test ------- のように、HOGEHOGEが二回繰り返して表示されてしまいました。 この原因は何なのでしょうか? 対策方法などありましたらアドバイスよろしくおねがいします。
- 116 名前:login:Penguin mailto:sage [2008/07/17(木) 20:43:30 ID:KzL7zakf]
- >>115
まず関係ないと思われる部分を省いて少しずつ試しなよ。
- 117 名前:login:Penguin mailto:sage [2008/07/17(木) 20:49:48 ID:KzL7zakf]
- ヒント
---------------------------- #!/bin/sh echo "input word" read word echo "" sed -e "1 s/^/${word}\n/" head.log ----------------------------
- 118 名前:login:Penguin mailto:sage [2008/07/17(木) 21:07:52 ID:fSKuDDXe]
- うわああああ!!
恥ずかしいです(><) ありがとうございました(;_;)
- 119 名前:login:Penguin mailto:sage [2008/08/01(金) 22:50:22 ID:WR526y3P]
- 改行の扱いについて教えてください。
以下のページによると www.gcd.org/sengoku/sedlec/3.txt > では「ジャンプせよ」という命令を実行することなくスクリプトの最後の行を > 過ぎてしまったらどうなるのでしょうか。(中略)この様な場合、SED は p と d を > 自動的に実行します。 とありますが、 echo -n aaa | sed -e 's/aaa/bbb/' を実行すると bbb が改行を伴わずに出力されます。 上記の説明と異なる結果でよく分からないのですが、、、 パターンスペースに各行の文字列を入れる際、行末の改行は捨てられるが、 その行が改行を伴っていたか伴っていなかったかについて、sedは何らかの形で 記憶している、そしてデフォルトの出力の際、もともと改行を伴っていたか どうかによって、出力文字列に改行を付けている。 このような理解でよろしいでしょうか。 よろしくお願いします。
- 120 名前:login:Penguin [2008/08/02(土) 00:47:41 ID:+VO1N7E+]
- age
- 121 名前:login:Penguin mailto:sage [2008/08/03(日) 00:52:44 ID:VOatfWTi]
- >>119
GNU sed のソースを見た限りでは、一行ごとに読み込んでいるのだけど 改行がついていたかどうかのフラグを持ってるね。 んで、入力に改行がなかった場合には出力にも付加しない。 POSIX的にはどうか知らないけど 119にある理解でいいんじゃないか?
- 122 名前:119 [2008/08/03(日) 21:20:32 ID:S34ZH5Ab]
- >>121
デフォルトの出力に関しては、最終行での改行の有無を意識しておけばよい ということですかね。 調べていただいてありがとうございました。
- 123 名前:121 mailto:sage [2008/08/04(月) 02:43:40 ID:GBDGU4jb]
- >>122
sedはawkとかPerlみたいにレコードの区切りを変えることができなくて一行単位というのは 動かないから、改行コードのあるなしが問題になるのは最終行だけだね。 ソースをちょっと grep してちょっと眺めただけだからたいした手間じゃないよ。
- 124 名前:login:Penguin mailto:sage [2008/08/05(火) 20:51:25 ID:X/szKwVr]
- grepの場合、改行がない最終行に対しては、改行を付けて出力するね。
- 125 名前:login:Penguin [2008/10/27(月) 23:21:57 ID:BnAQXfRx]
- "aaa"
"bbb ccc" このようなファイルの2行目と3行目を連結したいのですが、可能でしょうか。
- 126 名前:login:Penguin mailto:sage [2008/10/28(火) 00:00:22 ID:LqvgIl+t]
- >>125
詳しい条件書かないとわからんよ。 s/b\n/b/g その例には使えるけど。
- 127 名前:login:Penguin [2008/10/28(火) 00:04:49 ID:gCa9/U26]
- ありがとうございます。
この例で使えれば大丈夫なのですが、 条件として\nは使えるのでしょうか。
- 128 名前:login:Penguin mailto:sage [2008/10/28(火) 01:07:16 ID:LqvgIl+t]
- >>127
質問の意図がわからないのだが。
- 129 名前:login:Penguin mailto:sage [2008/10/28(火) 01:08:53 ID:dGaeCgPM]
- >>127
「自分の環境では、\nが認識されませんでした。」か?
- 130 名前:login:Penguin mailto:sage [2008/10/28(火) 01:24:35 ID:LqvgIl+t]
- >>127
ああ、すまん。確かにダメだわ。sedじゃないけど、 perl -pe "s/b\n/b/g" ファイル名 これで勘弁。
- 131 名前:login:Penguin mailto:sage [2008/10/28(火) 03:01:43 ID:/qenFkSI]
- /bbb$/{
N s/\n// } でどう? マッチ文字列や置換文字列に \n が使えるかどうかは環境によるので お前さんがどういうところで使っているかを書かなければ答えようがない。
- 132 名前:login:Penguin [2008/11/09(日) 22:38:03 ID:iboFIZ94]
- >「Error」がある行に,「### Check Line ###」という新しい行を追加する
>$ $ sed -e "/Error/i #### Check Line ###" source.txt ↑の構文なのですが、「新しい行を追加する」のではなく、 行の入れ替えを行う方法は無いでしょうか?
- 133 名前:login:Penguin mailto:sage [2008/11/10(月) 02:48:47 ID:oBt1rply]
- >>132
入れ替えって何と何を入れ替えるの? #### の行を先に出力したいってこと?
- 134 名前:login:Penguin [2008/11/10(月) 05:23:57 ID:Vv2a12Zc]
- >>133
例えば、以下のようなテキストがあった場合 111 222 Error 333 444 555 「Error」がある行に,「### Check Line ###」という行に入れ替えたいです。 以下のようなイメージです。 111 222 ### Check Line ### 444 555
- 135 名前:login:Penguin mailto:sage [2008/11/10(月) 05:33:29 ID:e8TF6STv]
- iじゃなくてc使う
- 136 名前:login:Penguin [2008/11/11(火) 21:48:17 ID:DQj2Ej4A]
- >>135
遅くなりましたが有難うございました!
- 137 名前:login:Penguin [2008/11/15(土) 16:52:59 ID:FFNCNb8R]
- ナイスなスレだな
- 138 名前:login:Penguin mailto:sage [2008/12/02(火) 10:28:40 ID:2vyuRZ6k]
- なぜawkを使わない?
- 139 名前:login:Penguin [2008/12/03(水) 01:46:50 ID:O9/K8qme]
- 下記のtest.datから、
[1が出現してから3が出現するまでの行]はアドレス範囲を使えば簡単に取得できますが $ sed -n -e '/^1/,/^3/p' test.dat [1が出現してから3が出現する前の行]を取得するにはどうやるのでしょうか? $ sed -n -e '/^1/,/^3/p' test.dat | sed -e '$d' でもいいのですが、1回のsedで済ますにはどうすればよいでしょう? $ cat >test.dat 0 1 2 3 4 5 ^D
- 140 名前:login:Penguin [2008/12/03(水) 02:53:15 ID:1xcvKxcT]
- >>139
sed -ne '/1/,/3/{/3/q; p'
- 141 名前:139 [2008/12/03(水) 08:40:11 ID:O9/K8qme]
- >>140
こういう時にqを使うんだ。 物凄く恥ずかしながら、目から鱗状態です。 2週間の間、何度も思い出しては考えても分からなかったので質問してみた。 ありがとう。
- 142 名前: [―{}@{}@{}-] login:Penguin mailto:sage [2009/04/08(水) 08:59:15 ID:DR9diDX0]
- unkar.jp/read/society6.2ch.net/gline/1211859269
m(_ _)m
- 143 名前: [―{}@{}@{}-] login:Penguin mailto:sage [2009/04/08(水) 09:00:09 ID:DR9diDX0]
- unkar.jp/read/society6.2ch.net/gline/1211859269/
- 144 名前: [―{}@{}@{}-] login:Penguin mailto:sage [2009/04/08(水) 09:01:33 ID:DR9diDX0]
- unkar.jp/read/society6.2ch.net/gline/1211859269.html
- 145 名前: [―{}@{}@{}-] login:Penguin mailto:sage [2009/04/08(水) 09:04:26 ID:DR9diDX0]
- www.23ch.info/test/read.cgi/gline/1211859269/
- 146 名前: [―{}@{}@{}-] login:Penguin mailto:sage [2009/04/08(水) 09:08:12 ID:DR9diDX0]
- www.23ch.info/test/read.cgi/news/1215790476/
- 147 名前:login:Penguin [2010/06/01(火) 16:15:16 ID:8+L/+i95]
- i=`echo $i|sed -e 's/^\([^ ]*\)\/$/\1/p' -e d`
スクリプト中のこの1文の意味が良く分かりません。 どういう処理をしているのか教えていただけないでしょうか。
- 148 名前:login:Penguin mailto:sage [2010/06/01(火) 23:50:47 ID:AqF3qhLQ]
- >>147
pc11.2ch.net/test/read.cgi/linux/1274866441/109
|

|