07/08/16 23:08:31 .net
まちがえた。
sedでやっても美しくならないから、awkで
awk '{a[NR]=$0}NR>1000{print a[NR-1000]}'
201:名無しさん@お腹いっぱい。
07/08/17 08:48:47 .net
sed -n '1h;1!H;1001,${g;P;s/[^\n]*\n//;h}'
202:名無しさん@お腹いっぱい。
07/08/17 12:49:09 .net
sedでやらなきゃいかんの?
203:名無しさん@お腹いっぱい。
07/08/17 13:44:34 .net
>>202
sedスレなので
204:名無しさん@お腹いっぱい。
07/08/17 14:06:45 .net
なんでsedスレを選んだんだろ。
205:名無しさん@お腹いっぱい。
07/08/17 15:15:15 .net
そこにsedがあるから
206:名無しさん@お腹いっぱい。
07/08/17 21:24:35 .net
>>200
>>201
レスありがとうございました。大変助かりました。
今回はawkを使おうと思いますm(__)m
>>202
すみません、sedを覚えたての初心者なもので・・・
207:名無しさん@お腹いっぱい。
07/08/21 03:25:33 .net
sed -n ':b;1001,${P;N;D};N;bb'
詰め
208:名無しさん@お腹いっぱい。
07/09/06 11:55:22 .net
下のような行があったとして
command, --いろいろなコメント
command, だけ残して、--いろいろなコメント(--から後ろ)を全部削除
したいのですがどうすれば良いんでしょうか?
本を読んでもよくわかりません。どうかお助け下さい。
209:名無しさん@お腹いっぱい。
07/09/06 12:02:37 .net
sed 's/--.*//'
210:208
07/09/06 12:05:26 .net
消えました!
ありがとうございました!>>209
ほんと助かりましたです。
211:名無しさん@お腹いっぱい。
07/09/06 13:04:52 .net
質問ばかりで恐縮なのですが、もうひとつ質問があります。
line...$
な行があったとして、^line を見つけた時に、下のようにおしりに
HOGEな文字列を追加したい場合はどうすれば良いのでしょうか?
line... HOGE$
ほんと、勉強不足で申しわけありません。オライリー本を片手にやってる
のですが、どうしてもわかりません。
212:名無しさん@お腹いっぱい。
07/09/06 13:12:43 .net
>>211
sed '/^line/s/\$$/ HOGE$/'
address について調べれ。
213:名無しさん@お腹いっぱい。
07/09/06 13:31:20 .net
>>211 の $ は文字じゃなくて、正規表現の $ の意味ではないのかと
214:名無しさん@お腹いっぱい。
07/09/06 14:15:56 .net
>>212-213
ありがとうございました。
sed '/^line/s/$/ HOGE/'
でうまくいきました。addressについても勉強してみます!
215:名無しさん@お腹いっぱい。
07/10/07 16:15:05 .net
仮ファイルを使わずに
入力ファイル自身を書き換えることは出来ますか?
216:名無しさん@お腹いっぱい。
07/10/07 16:58:58 .net
-i
217:名無しさん@お腹いっぱい。
07/10/11 01:21:12 .net
//exec($command,$arg);
とコメントアウトされた行をアンコメントしたいんだけど
sed 's/\/\/(exec\(\$command,\$arg\);)/\\1/' -i hoge.php
とかやっても思ったとおりに置換されない
(とか$とか/とかをうまくエスケープできてないだけなのか
どうなのかがよくわかんないんだけど、どこが間違ってる?
218:名無しさん@お腹いっぱい。
07/10/11 01:30:55 .net
sed -e 's@//\(exec(\$command,\$arg);\)@\1@'
219:名無しさん@お腹いっぱい。
07/11/11 11:05:40 .net
教えて下さい。
例
12345kkk6789
23456kkk4321
32456kkk9876
のようなテキストファイルが複数あり、
各行のkkk以降(kkkも含めて)を削除したいです。
1日考えてダメだったので、だれかお助け願います。
220:名無しさん@お腹いっぱい。
07/11/11 11:11:26 .net
sed -e 's/kkk.*//'
221:名無しさん@お腹いっぱい。
07/11/11 13:48:54 .net
ありがとうございます。
222:名無しさん@お腹いっぱい。
07/12/19 03:19:13 .net
sed -e '500,$d' の500の部分を変数にすることって出来ますか?
例えば、sed -e '$no,$d' みたいな感じで実行するとエラーになって困ってます。
223:名無しさん@お腹いっぱい。
07/12/19 03:39:03 .net
>>222
シングルクォートをダブルクォートに変えてみな。
224:222
07/12/19 03:55:03 .net
>>223
どうもです。
sed -e "$no,$d"という風に変更してみましたがダメでした…
そもそも変数を指定することが出来ないというオチなのでしょうか?
225:名無しさん@お腹いっぱい。
07/12/19 04:23:23 .net
>>224
あ、>>222 をちゃんと見てなかった。
$d は変数じゃなくて行末とデリートか。
なら、後ろの $ はエスケープが要るな。
sed -e "$no,\$d"
> そもそも変数を指定することが出来ないというオチなのでしょうか?
sed 自身が変数を解釈しているわけではない。
この場合は sed に引数を渡すシェルが処理をしている。
bash を例にとって説明すると >>222 の形式では
シングルクォートの中身は展開されずに
そのままの文字列が sed に渡される。
ダブルクォートにすると中身を展開するので
$no と $d を変数と解釈して設定された値に
入れ替わったものが sed に渡される。
この辺の挙動をちゃんと知りたいのならおまいさんが
使っているシェルの man を読め。
226:222
07/12/19 04:41:38 .net
>>225
エスケープしたら一発で成功しました!
225さんの説明を読んで、また一つ理解が深まりました。
どうもありがとうございました!
227:名無しさん@お腹いっぱい。
07/12/19 07:23:30 .net
>>215
>>144
228:名無しさん@お腹いっぱい。
07/12/19 13:56:00 .net
sedの置換について質問 (GNU sed 4.x)
タブ(\t)は置換できるのですが改行(\n)が置換できません。
例えば # cat a.txt
aaa
bbb
aaa(タブ)bbb
3行目の(タブ)区切りは置換できるけど1行目と2行目にマッチした文字を置換できません。
どうやったらできますか?
229:名無しさん@お腹いっぱい。
07/12/19 14:48:42 .net
何をどう置換したいのだ?
sed のスクリプトのほうも示してほしいのだが
230:228
07/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:名無しさん@お腹いっぱい。
07/12/19 19:02:25 .net
-e 's/^aaa$/eee/' -e 's/^bbb$/fff/'
232:名無しさん@お腹いっぱい。
07/12/19 19:25:27 .net
>>231
アフォかw
233:228
07/12/19 19:47:13 .net
訂正
a.txtの内容
----------
aaa
bbb
ccc
bbb
----------
このa.txtを
----------
aaa
bbb
ccc
ddd
----------
↑のように置換したい。
この文字は何行目にあるか不明だとして
一番下のbbbをdddに置換することはできますか?
234:名無しさん@お腹いっぱい。
07/12/19 20:03:31 .net
>>233
sedじゃなきゃいかんの?
235:名無しさん@お腹いっぱい。
07/12/19 20:06:41 .net
>>233
ほれ、解答だ
↓
sed -n '${p;q};:s; N;s/ccc\nbbb/ccc\nddd/;P;D;b s'
236:228
07/12/19 20:21:37 .net
>>234
sedじゃなくてもいいですけど、置換できますか?
>>235
エラーがでました。
extra characters at the end of q command
237:名無しさん@お腹いっぱい。
07/12/19 21:07:06 .net
>>236
俺のところではエラーにならないけどな。
わかりやすいように改行を入れるとこんな感じ
↓
sed -n '
${
p
q
}
:s
N
s/ccc\nbbb/ccc\nddd/
P
D
b s'
238:名無しさん@お腹いっぱい。
07/12/19 21:24:57 .net
>>236
sed じゃなくてもいいならこっちで。
シェルスクリプト総合 その9
スレリンク(unix板)
239:228
07/12/19 21:26:39 .net
1行で出来ませんか?
240:228
07/12/19 21:30:49 .net
>>238
わかりました。ありがとう。
241:名無しさん@お腹いっぱい。
07/12/19 22:06:56 .net
sed -n '${p;q;};:s;N;s/ccc\nbbb/ccc\nddd/;P;D;b s'
242:名無しさん@お腹いっぱい。
07/12/19 22:24:14 .net
>>241
できました。ありがとう。
243:名無しさん@お腹いっぱい。
08/01/05 05:42:11 .net
sed -n "m(_ _)m|-_-|(っ゚ロ゚)っ"
244:名無しさん@お腹いっぱい。
08/01/05 17:14:31 .net
sed: 1: "m(_ _)m|-_-|(っ゚ロ゚)っ": invalid command code m
245:名無しさん@お腹いっぱい。
08/01/30 03:09:39 .net
( を に痴漢したいんだけど
$ cat hoge | sed -e "s/\\\(/ /"
ってやってもなんか駄目っぽい
なんで?
246:名無しさん@お腹いっぱい。
08/01/30 05:08:34 .net
>>245
シングルクォートならどうよ?
$ sed -e 's/(/ /' hoge
247:名無しさん@お腹いっぱい。
08/01/30 10:17:02 .net
sedはバックスラッシュいらない。
グループ化したいときはいるけど。
248:名無しさん@お腹いっぱい。
08/01/30 23:45:42 .net
>>246
シングルクォートならできるんだけど、なんかこう
どうしてもダブルクォートでやりたいお年頃なんです
249:名無しさん@お腹いっぱい。
08/01/31 01:10:52 .net
大人になりましょう
250:名無しさん@お腹いっぱい。
08/01/31 15:44:59 .net
ある単語(例:foo)をhoge-"
と置換したいんですが、
sed -e "s/foo/hoge-"/g"
だと当たり前だけどエラーが出ます・・・。
ダブルクォートとかって、どうやって指定したらいいんでしょう?
251:名無しさん@お腹いっぱい。
08/01/31 15:54:58 .net
sed -e "s/foo/hoge-\"/g"
252:名無しさん@お腹いっぱい。
08/01/31 16:18:41 .net
>>251
おお!ありがとう!!できましたヾ(゚∀゚)ノ
しかし>を認識しなくなってリダイレクトが使えなくなった・・・。
Winに組み込んだSedだからなのかなぁ・・・。
253:名無しさん@お腹いっぱい。
08/02/02 11:55:41 .net
winのコマンドラインパーサーは腐っているから-fで渡したほうが精神的によろしい。
254: ◆b/iUrOax9k
08/04/13 23:43:03 .net
お邪魔します^^
あのスレの>>144さんありがとうございます
私の目標と現状を書いておいたほうが良いのかな
★Aタイトル一覧表を作る(”タイトル”の部分はそれぞれ対応したファイルにリンクを貼る)
★Bタイトル一覧表に対応したデータファイルをタイトルの数だけ作る
但し★Bを作成する前に全てのデータを1ファイルに集約した後ソートして
重複チェック、データ欠如のチェックしたいです
・データファイルはPC内にある既存のファイルから必要な部分を抽出して作成する
●必要な部分●
①<title>~</title>(元ファイルは1行の場合と2行なたは3行の場合がある)
②<object ~ /object>(元ファイルは1行の場合と2行なたは3行の場合がある)
③<span>~</span>(備考欄に使おうと自分で全てのファイルに付け足しました現在はタグだけです)
(元ファイルから抽出と新規作成にタグだけ付け足しても同じ内容になります。どちらでも構いません)
他のところで教えてくれた方が居て★Aの作成と、★Bの①②③の個別取得できています
★Aの一覧表からテスト作成のリンクファイルに飛ぶことも出来ています
★Bのデータファイルを作れないで居ます
私のレベルなんですが他の言語スレで呆れ返られるくらいの初心者で
単語の名前や意味は殆どわからないです
結局、自分のやりたいことはファイル操作であることが最近知りました
それまでの経緯でHTMLとジャバスクリプトと正規表現の本
それからperlの本は自宅にあります
sed全くわかっていないです^^;
単語の意味がわからない事だらけで意味を調べて廻る事でせいいっぱいで
なかなか前進しないままです
とり急ぐわけではないのですが
もしよろしければお時間の都合の良いときだけで結構ですので教えて頂けましたら幸いです
どうぞよろしくお願い致します
255:名無しさん@お腹いっぱい。
08/04/14 01:07:47 .net
>>ALL
Win版のsedの話なんだけど、sedスレがUNIX板とLinux板に
しか無いので誘導させてもらったけどいいっすか?
>>254
PerlやJavaScript(JScript)がわかるなら、そっちでやったほうがいいね。
マッチングさせたい物が1~3行に渡るって所でモレにはわからん。
できるかもしれないが複雑になるような希ガス
256: ◆b/iUrOax9k
08/04/14 01:17:30 .net
144さん
ありがとうです
お声かけて頂いただけで嬉しかったです
まだ解説本を購入して10日程です
全部読んでいないのでどこまでできるかわかりませんが
自力でもう少し頑張ってみます
本当にありがとうございました^^
お疲れのところすいませんでした
257:名無しさん@お腹いっぱい。
08/04/14 23:09:24 .net
よく流れがわからんが
やりたいこと全部を一気に教えてもらうとかせずに
知りたいポイントをしぼって一つずつ質問すれば答えてくれると思うよ。
258:名無しさん@お腹いっぱい。
08/04/15 03:56:38 .net
各板で暗黙のルールみたいなのがあるんだろうか
やりたいことは先に書いた通りなんだけど
プログラム板というところで初めはHTMLの読み込み方を聞いてみたんですよ
そしたら「何がやりたいのかよくわからん。もっと詳しく。」ばかりレスが付くんです
それで私が「ファイルの読み込みです」と返事をすると「具体的にここに書かないとわからない」
これを繰り返しているうちに「後出し条件だ」とか「それはプロにしか出来ないレベル」とか
結局何も返答しないのに威張ってばっかり。
まるで解答者(のフリをして答えない)人の相手をするばかりで全く進まない
解答者らしき人を問い詰めていったら
私のような人間を探してネタをパクッタリいい人を装いながら客として誘導したり
最初から教える気は全く無いって事でした。無駄な時間ばかり過ぎていくので
板を変えてプログラマー板ってとこへも行ってみたのですが
そこでも「もっと具体的に」「わからん全部書け」「質問以前に問題あり」
散々小ばかにされては解答は無し。
やはり同じような輩が蔓延っていました
2chで教えて貰おうとするのが間違っているのかもしれません
自分は今までパソコンソフトには全く興味が無かったので
こういう汚い連中が露骨に威張り倒してるところがあるとは知りませんでした
他の板でもひどい言葉はよく見かけますが
大体はまともな意見が多いので誰かがフォローしてくれたりしますが
パソコン関係は解答者が圧倒的に優位なようだ
「只で教えてるんだぞゴルァ」とかも言われました(一度も解答しない人にw)
只で教えたくないならスルーでいいのではと言い返したら
質問者としてなって無いとか言い出す始末
そういうことでまとめて書いておいたんです
解答者の振りをする連中は答えないのに質問者をいじって遊んでるんです
でわ
259:名無しさん@お腹いっぱい。
08/04/15 06:30:34 .net
>>258
そのとおりです。
回答が欲しい場合はエスパースレへ
↓
【エスパー】くだ質【エラーメッセージ不要】(1)
スレリンク(unix板)
260:名無しさん@お腹いっぱい。
08/04/15 06:40:21 .net
うわぁ…これはひどい。
書き込む前に自分のレスを読み返してないのか?
全然まとまって無いし、誤字脱字だらけ。
スクリプト書く前にやりたい事を
簡潔な日本語で書く練習をした方が良い。
いや、マジで。
261:255
08/04/15 07:51:22 .net
>>258
暗黙のルールという訳じゃないけどできるだけ楽して、人から聞きだそうという態度の人は煽られるね。
あなたにそういうつもりは無くても例えば、せっかくこのスレまで誘導したのに、
>sed全くわかっていないです^^;
>もしよろしければお時間の都合の良いときだけで結構ですので教えて頂けましたら幸いです
これだけ見ると、1から10まで教えろって言ってるように見えるよ。
色々なスレを見ればわかるが、質問をして、あなたのように煽られる人と、
煽られない人がいるが、その違いがわからないのであれば、
「2chで教えて貰おうとするのが間違っているのかもしれません」という事。
262:名無しさん@お腹いっぱい。
08/04/15 11:53:57 .net
>254が辿ってきたのは俺の知る限りこの辺かな。
スレリンク(hp板:35番)
スレリンク(php板:275番)
スレリンク(tech板:664番)
スレリンク(tech板:126番)
スレリンク(software板:109番)
童謡のいぬのおまわりさんみたいな状況だな。
263:名無しさん@お腹いっぱい。
08/04/15 14:20:36 .net
みんなレスありがと
答えてくれたことにお礼を言うのは当たり前だと思うんだけど
今までのスレは答える前から上から目線で結局答えてくれない
この人たちは解答を知らないのでは?と思うようになったんですよ
昨日も私が質問しているように見えるので他の質問に答えれないだろ
あの質問もお前だろって言うので
「それ自分じゃないよその質問には答えてあげればいいよ」とかやりあってたら
その質問者が現れた
当然のように解答者にはペコペコ謝ってる(これからも解答してもらうために)
この先、解答は期待できない私には一言もなし
初心者用の解説本をヨンから来いと言われるんだけどファイル操作は初心者用ではわからないようだ
手持ちのperlは3冊ある(超初心者用、初心者用、命令逆引き辞書)
perl解説本ではファイル操作の解説に至るまでにCGIの解説ばかりだ
やっとファイル操作の解説まで読み進めたら5ページほどで終わってるorz
perlでファイル操作は中級レベルの解説本を買わなければいけないのかと思うようになった
他の言語を調べてみた
CとかjavaとかAjax
初めのほうからファイル操作は解説している
ただ解説に使っている言葉自体が命令を使って解説しているので自分には全く理解不能だorz
>>262
それ以外にも軽く10スレ以上は廻ったよ
それで何か言語を覚えなきゃダメだなってわかったんだ
264:名無しさん@お腹いっぱい。
08/04/15 14:28:27 .net
結局、私の言いたかったのは答えれないのに答える振りしてまで
優位に立ちながら出てこなくてもいいのではないのかってこと
どうせ答えないのにいかにも「解答欲しけりゃぺこぺこするのは当たり前だろカス氏ね」的な態度とって
それで解答しなくても解答者を装ったほうがいいってことなのだろか
何もわからないことまでしゃしゃりでてこなくてもってことです
偽解答者なら私でも今からすぐにできそうだw
265:名無しさん@お腹いっぱい。
08/04/15 14:34:59 .net
ちなみに某スレでdieがわかんないような逆引き辞書だよ
って記載した後に解説本に載ってたサンプルが動かなかったので
なぜエラーになるのかわからないって書いたら
難しいことには答えない
でも何か答えなければって強迫観念でも沸き起こるのか
解答者を装いながら勉強するのも手段なんだろうけど
なにがなんでもしゃしゃり出てくるのは過疎っているからだろね
悪循環板だ
266:名無しさん@お腹いっぱい。
08/04/15 18:54:33 .net
>>261の意味がわからないようだね。
>何もわからないことまでしゃしゃりでてこなくてもってことです
あんたが自由に質問をしていいように、他の人間もそれに対して自由にレスを付ける事ができる。
「わからないなら、しゃしゃり出てくるな」というのは単なるあんたの都合でしょ?
そうでなければ、そいつらを自分より低レベルだと見下したいのか。
そういう事をされて、このスレでクダを撒き、関係の無い人に八つ当たりをしているあんたは、
そいつらと同類という事に何故気付かない?
もう一つ。「自分」と「2ちゃんねる」のやり取りだと思っているようだけど、
レスをしているのは「個々の人間」だ。
267:名無しさん@お腹いっぱい。
08/04/15 18:56:42 .net
あれだろ、渋谷までいきたいんですが教えてください。
って質問して
電車で、とかタクシーで、とか徒歩で、とか教えてくれてるのに
切符の買いかたがわかりません、とか
タクシーって何ですか?とか
徒歩って何って読むんですか?とか
馬鹿な質問してるから飽きれられてるんだろ。
268:名無しさん@お腹いっぱい。
08/04/15 19:02:52 .net
人生相談ならよそでやってくんないかな。
sedと関係ない。
269:名無しさん@お腹いっぱい。
08/04/15 19:43:39 .net
>>263-265
URLリンク(www.wdic.org)
>今までのスレは答える前から上から目線で結局答えてくれない
まともに回答してくれた人間に随分失礼な言い草だな。
270:名無しさん@お腹いっぱい。
08/04/15 21:42:30 .net
>>263
>それで何か言語を覚えなきゃダメだなってわかったんだ
わかったけど勉強する気が無いわけ?
次から次へと言われるがままにPerl、JavaScript、サクラエディタ、awk、sedと
目先で楽できそうな物を追っかけてるから目的が達せられないんだ。
>初心者用の解説本をヨンから来いと言われるんだけどファイル操作は初心者用ではわからないようだ
参考書として勧められてない「独習Perl」が手元にあるが丁度半分まで読んだ所で扱われているが。
努力をしないで結果を得たいなら、それなりの報酬を出して人を募集するか、
質問専用掲示板で、具体的にサンプルを出し、これこれこーゆースクリプトを
書いて下さい、と依頼するかのどちらか。
URLリンク(okwave.jp)
271:名無しさん@お腹いっぱい。
08/04/15 21:47:06 .net
sedは数年でなくなる
272:名無しさん@お腹いっぱい。
08/04/15 23:16:01 .net
何いきまいてんの?
パソコンソフトって結局ゲームソフトみたいなもんでしょ
その操作を知ってるからって威張るもんじゃないよね
自分で作ったソフトじゃないんだから
ゲームソフトの使い方だったら攻略本としてでるんだろうけどね
ソフトの使い方を先に知ったからって偉いと思ってんならスルーすればいいじゃん
メモ帳やペイントみたいなもんで使い方覚えたらどってことないと思う
いざやり始めた人間をいじくって遊ぶなんて恥ずかしいね
273:名無しさん@お腹いっぱい。
08/04/15 23:19:39 .net
やぁやぁ我こそはsedの達人なり~~
そやって表歩いてみ
誰か「キミ凄いんだ」と声でも掛けてくれたらいいねw
我こそはプログラマーなり~~~~腹いてー
274:名無しさん@お腹いっぱい。
08/04/15 23:39:00 .net
高校、大学と印刷関係の工場でバイトしてたんだ
当時職人と呼ばれる連中はタバコくわえながら
あごで指図しては怒鳴りあげたりやりたい放題
その頃何も知らなかったので「○○さん技術あるから仕方ないよね」みたいな空気があった
ん?
ちょっと待て!
機械の操作だけじゃん
今や家庭用のプリンターでも当時の技術を遥かに超えている
車にの運転とかもそうだよね
昔は女性が免許持って運転してると目立つしなんかあったら「女の運転わ・・」とか言われたもんだ
今の乗用車の性能で言えば当時のレーサーを余裕でぶっちぎれますw
そんな感じで機械やソフトを開発してるのは偉いと思うけど
操作で自慢されても5年後にはもっと簡単で3日でものになるソフトが出てるかもしれないよ
275:名無しさん@お腹いっぱい。
08/04/15 23:49:36 .net
以後放置で。
276:名無しさん@お腹いっぱい。
08/04/16 03:11:06 .net
あらら、自分の非を指摘されて、それが正しいもんだから逆切れしちゃった訳ね。
まともに反論できないからって、お前の母ちゃんでべそーは無いよな(笑)
277:名無しさん@お腹いっぱい。
08/04/16 04:20:47 .net
自分で作ったソフトでも無いのにw
使い方知ってるくらいでそこまで威張るか普通?
そんなことぐらいで天狗になる奴リアルではいないよw
ゲームの上手い子供が威張り倒してるのとどう違うんだ???
パソコンソフトの使い方ぐらいでこんなに意地になる連中マジで知らんわw
教えたくなければ知らん顔してればいいのに何が何でも答えるんだね(解答以外はwwwww)
多分、実社会でもずれてんだろなー
キミはた迷惑だと思われてるかもしれないよw
廻りよく見てみw
278:名無しさん@お腹いっぱい。
08/04/16 04:32:41 .net
何このスレ?
279:名無しさん@お腹いっぱい。
08/04/16 04:58:56 .net
「教えて君」の見本のような奴だな。
280:名無しさん@お腹いっぱい。
08/04/16 05:24:34 .net
おもちゃを上手く使いこなせたから自慢してるって程度じゃないな
頭小学生並みの幼児性w
上から目線が笑えるw
こいつ 奴 プ
笑えるwww
言葉遊びできない奴は何やってもダメって典型
281:名無しさん@お腹いっぱい。
08/04/16 05:39:44 .net
これほどの逸材を埋もれさせておくのはもったいないから age とく
282:名無しさん@お腹いっぱい。
08/04/16 05:48:41 .net
# >>275がいいと思うんですが。
>>281
そういうことでしたら>>262に追加で、逸材ぶりがよく伝わるスレも。
スレリンク(php板:42-番)
283:名無しさん@お腹いっぱい。
08/04/16 17:32:10 .net
これは壮大な釣りなのか?
一瞬、なりすましを疑ったが、>>262,282を見ると、まさに本人だよな。
284:名無しさん@お腹いっぱい。
08/05/15 23:42:43 .net
sedって文全体からある語句を置換するのは簡単だけど、
最初にマッチする語句だけ置換して後はそのまま出力しようとするとちょっと複雑になってしまうよね。
スクリプトの先頭に戻らない様なループを作らないといけない。
285:名無しさん@お腹いっぱい。
08/05/16 00:20:54 .net
>>284
遠まわしに「最初にマッチする語句だけ置換をする簡易な方法はありませんか?」
って聞いてるのか?それとも独り言ならチラ裏へ。
286:名無しさん@お腹いっぱい。
08/05/16 11:39:13 .net
% ( echo hogehoge; echo hogehoge ) | sed '0,/hoge/s/hoge/fuga/'
fugahoge
hogehoge
GNU sed に限るようだが。
287:284
08/05/16 21:22:18 .net
>>286
レスサンクスです。ただ最初の0を1でやった場合はうまくいきませんでした。
s/hoge/fuga/
:loop
p
N
s/.*\n//
b loop
漏れの頭ではこんなのしか思い付きませんでした。
もっとスマートな方法があったら教えてください。
288:名無しさん@お腹いっぱい。
08/05/16 21:36:55 .net
>>287
/hoge/{
s/hoge/fuga/
:loop
n
b loop
}
289:名無しさん@お腹いっぱい。
08/06/04 19:06:03 .net
/me ?
290:名無しさん@お腹いっぱい。
08/07/07 08:34:28 .net
n文字目のxのみyに置換というのはどうすればいいですか
291:名無しさん@お腹いっぱい。
08/07/07 08:36:46 .net
n文字目のxとは、
行頭から(n-1)個の文字のあとに出現するx のことか?
行頭からn回目に出現するx のことか?
292:名無しさん@お腹いっぱい。
08/07/07 09:42:38 .net
>>291
参考までに両方ともお願い
293:名無しさん@お腹いっぱい。
08/07/07 12:09:14 .net
前者です
294:名無しさん@お腹いっぱい。
08/07/07 13:30:25 .net
>>291
後者ですが、念のため両者の場合について教えてください
295:名無しさん@お腹いっぱい。
08/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:名無しさん@お腹いっぱい。
08/07/07 23:32:28 .net
()ってのは条件になるん?
297:290 293
08/07/08 10:30:38 .net
ありがとうございます
確かに.×4みたいに表現できたらかっこいいですが
これで文句なしです!
298:名無しさん@お腹いっぱい。
08/07/08 11:11:36 .net
>>297
×4は無理っぽい。
echo x-x-x-x-x- | sed 's/\(\([^x]*x\)\{3\}[^x]*\)x/\1y/'
299:名無しさん@お腹いっぱい。
08/07/08 11:49:57 .net
>>298
Solarisのsedじゃ動かんな。
300:名無しさん@お腹いっぱい。
08/08/29 17:04:29 .net
01101,"0600031","ホッカイドウ","サッポロシチュウオウク","キタ1ジョウヒガシ","北海道","札幌市中央区","北一条東",0
↓
01101,"0600031","ホッカイドウ","サッポロシチュウオウク","キタ1ジョウヒガシ","北海道","札幌市中央区","北一条東",0
この第5フィールドの半角英数だけ(2個有る場合もあり)全角にしたいのですが
どのようにsedを作ればいいでしょうか?
301:名無しさん@お腹いっぱい。
08/08/29 17:07:35 .net
>どのようにsedを作れば
釣りポイントはここですか?
302:名無しさん@お腹いっぱい。
08/08/29 21:15:26 .net
その形式は、郵便屋の郵便番号データだろ。
エクセルか何かの一覧表をcsvに落としただけの代物だから
そのままでは役に立たないよ。
そのままDBに格納し、専用プログラムで変換かけて正規化してる。
303:名無しさん@お腹いっぱい。
08/10/08 23:13:50 .net
aaa.hoge
bbb.hage
ccc.foge
とかいう文字列があって、*.hoge以外にマッチする正規表現って出来るのでしょうか?
304:名無しさん@お腹いっぱい。
08/10/09 00:18:38 .net
スレ違い。正規表現スレに池
305:名無しさん@お腹いっぱい。
08/10/09 21:57:14 .net
>>303
その文を素直に読むと、当該文字列にだけはマッチしない
正規表現と読めるが、書き込み子の心情を忖度すると、
sed 's/[a-c]{3}\.hoge/==matched==/' って事かな?
まあ、[a-c]* でも、(aaa|bbb|ccc) でも、[[:alpha:]]* でも、
マッチする表現は無数に有るけど、(・・に、だけマッチする)
を、求めているなら、そもそも*.hoge って見当外れだし、
要するに、何が知りたいのか良く分からん。
306:名無しさん@お腹いっぱい。
08/10/10 17:29:18 .net
>>305
> >>303
なるほど、ありがとうございます。
307:名無しさん@お腹いっぱい。
08/10/27 23:08:07 .net
ファイル内の、スペース+改行をスペースのみに置換したいのですが、
どのように記述すればよいのでしょうか。
データ数が数十万行あるため、ファイルを全部読み込んでから
置換する方法では、容量がオーバーしてしまいました。
308:名無しさん@お腹いっぱい。
08/10/27 23:26:18 .net
>>307
Perl か何かで書いちゃった方が早いんじゃね?
309:名無しさん@お腹いっぱい。
08/10/27 23:29:29 .net
>>308
環境上、Perlを使用することができないんです。
sedでは難しいでしょうか。
310:名無しさん@お腹いっぱい。
08/10/28 00:02:57 .net
環境によって違うと思うけど普通の書き方じゃダメなのか?
s/ \n/ /g
311:名無しさん@お腹いっぱい。
08/10/28 00:07:58 .net
>>310
自分の環境では、\nが認識されませんでした。
312:名無しさん@お腹いっぱい。
08/10/28 02:53:50 .net
>>311
OSの具体的な名前とかは出さないのな。
s/\
/ /g
では?
313:312
08/10/28 02:56:53 .net
すまん。勘違いした。
sed はPerlと違って、入力したときに改行を取り除いてからパターンスペースに送るから、
そこで改行探しても見つかりっこない。
んで、出力時に自動的に改行は付くし、これを抑制する手段はない。
せめて awk使っとけ。Perlなくてもawkはあるだろ。
314:312
08/10/28 02:58:41 .net
すまん勘違いしてた。
sedはPerlと違って入力時に改行を取り除くから、置換時に改行探したって見つかりっこない。
Nとかで次の入力を読んでくれば間に挟まるけど。
315:名無しさん@お腹いっぱい。
08/10/28 03:19:55 .net
おまえらマルチに親切だな
316:名無しさん@お腹いっぱい。
08/10/28 07:09:08 .net
ありがとうございました。
sedでは難しそうですね。別の方法を探してみます。
317:名無しさん@お腹いっぱい。
08/10/28 07:21:00 .net
微妙に変えてあるとこがうまいな。
318:名無しさん@お腹いっぱい。
08/10/28 22:44:37 .net
tr -d '\n'
319:名無しさん@お腹いっぱい。
08/10/28 22:47:24 .net
良く読んで赤面しろw
>>318
>>307
「スペース+改行をスペースのみに置換したい」
320:名無しさん@お腹いっぱい。
08/10/28 22:54:10 .net
>>307
sed '
:again
/ $/{
N
s/?n//
b again
}
'
321:名無しさん@お腹いっぱい。
09/02/16 16:23:57 .net
sedの公式ホームページってないのでしょうか
awkは一応gawkがあって一応開発も続いているようですが
sedはどのような状態なのでしょうか?
いつまでたっても最短マッチを搭載しない理由もお教えねがいます。
322:名無しさん@お腹いっぱい。
09/02/16 23:57:10 .net
そういう機能を追加すると、既存のスクリプトが動作しなくなるから。
ポータビリティを失ってまで実装する必要がない。(それこそ、perlでもawkでも使えばいい)
323:名無しさん@お腹いっぱい。
09/02/17 09:03:12 .net
なるほど、参考になりました。
もし開発に参加できるなら参加したいと思っていたのですが
そのような理由ならそういったときはperlやawkに頼る事にします。
324:名無しさん@お腹いっぱい。
09/02/18 09:33:00 .net
>>322
sedに正規表現perl互換モードを搭載すればいいだけなのにね
325:名無しさん@お腹いっぱい。
09/02/19 18:21:24 .net
GNU sedの-r みたいなので、perlモードがあればいいね。
326:名無しさん@お腹いっぱい。
09/02/19 19:39:12 .net
>>321
gnu sed 拡張している人たちがいるからそのあたりに乗ってみれば?
327:名無しさん@お腹いっぱい。
09/02/19 20:18:08 .net
onigsedじゃダメなのか?
つーか、perl -pe でいいじゃん。
328:名無しさん@お腹いっぱい。
09/02/24 17:21:46 .net
>>321
GNU sed なら
URLリンク(www.gnu.org)
329:名無しさん@お腹いっぱい。
09/02/27 16:21:29 .net
>>327
今度はsed互換ではないという
330:名無しさん@お腹いっぱい。
09/06/29 20:49:52 .net
質問させてください。
sedでホワイトスペースを解除または増やす方法ってあるのでしょうか?
331:名無しさん@お腹いっぱい。
09/06/29 20:52:21 .net
間違い。ホールドスペースです。
332:名無しさん@お腹いっぱい。
09/06/29 21:16:24 .net
以下ホワイトベース禁止
333:名無しさん@お腹いっぱい。
09/06/29 22:40:10 .net
白兵戦になるぞ!
334:名無しさん@お腹いっぱい。
09/07/03 03:11:56 .net
sedで、
/pattern/r file
ってするとマッチした行の次にfileの内容が出力されますが、
その行の前に出力する方法はないでしょうか?
ちなみにマッチする行は1個しかありません。
335:名無しさん@お腹いっぱい。
09/07/03 23:31:09 .net
sed -n -e '/pattern/r file' -e p
336:名無しさん@お腹いっぱい。
09/07/03 23:49:16 .net
ごめん、ダメだった。こっちで。
sed -n -e 'x;p;g' -e '/pattern/r file'
1行目の空行は無視して
337:名無しさん@お腹いっぱい。
09/07/03 23:53:59 .net
1行めの空白はもう1段 | sed 1d で消せるけど……
入力の最後の1行出てなくない?
338:336
09/07/04 00:17:53 .net
出てなかった。
sed -n -e 'x;p;g' -e '/pattern/r file' -e '$p'
という感じで最後の行を出力することは出来るけど
patternが最後の行の場合だけ、fileの内容が次行に出ちゃう。
自分はギブアップ
339:名無しさん@お腹いっぱい。
09/07/04 12:34:06 .net
いろいろありがとうございます。
sed 1個では難しいようですね。
patternより前とpattern以後に別けて、
間にfileをcatするしかないのかもしれません。
340:名無しさん@お腹いっぱい。
09/07/04 18:04:47 .net
sed 2個ならなんとか
sed -e '$aEND' | sed -e '
$d
/pattern/{
r file
N
}
${
P
d
}'
341:名無しさん@お腹いっぱい。
09/09/24 17:28:09 .net
>>295 の例に似てますが、
バイナリファイル(1行めの)4バイトめを ASCII 文字 0x02 -> 0x03 に
変更するにはどうすればいいでしょう?
# sed -e '1s/^\(...\)\x02/\1\x03/' in > out
ではだめでした。
試した環境は FreeBSD 7.2 です。
342:名無しさん@お腹いっぱい。
09/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:名無しさん@お腹いっぱい。
09/09/25 10:26:24 .net
>>341
sed -e "1s/^\(...\)^B/\1$(printf '\03')/"
でできんかね。^BはC-v C-b入力できるはず。
344:名無しさん@お腹いっぱい。
09/09/25 10:46:05 .net
>>343
最初の3バイトに改行文字がない保証がないから一般的にはだめそうだな。
やっぱ行指向のsedでバイナリファイルを操作するのは無理があると思う。
345:341
09/09/25 12:31:36 .net
\x02 などは GNU sed の拡張仕様でした。
# pkg_add -r gsed
# rehash
# gsed -e '1s/^\(...\)\x02/\1\x03/' in > out
でできました。
346:名無しさん@お腹いっぱい。
09/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:名無しさん@お腹いっぱい。
10/02/20 21:42:41 .net
ひとつ、お聞きいたします。
Nコマンドって、最後の行で次行が読めない場合、何もせず終了、
のはずですよね。すると、
sed 'sed ':l;N;bl' <file>
とすると何も出力されないんじゃないかと思うんですが、
私の使っているGNU sed 4.1.5版だと<file>の全部を出力してしまいます。
つまり、「何もせず終了」じゃなくて、「デフォルト出力して終了」
になっているように思われるわけですが、これは、どうなんでしょうか。
348:名無しさん@お腹いっぱい。
10/02/20 23:16:51 .net
>>347
infoに書いてありました。
349:名無しさん@お腹いっぱい。
10/07/01 23:39:24 .net
なるほど
350:名無しさん@お腹いっぱい。
10/08/17 13:08:10 .net
yコマンドで"/"を対象に入れたいんですが出来ないんでしょうか
初歩的ですいません
351:名無しさん@お腹いっぱい。
10/08/17 13:23:28 .net
>>350
sed y,abc,ABC,
とかできるから、
sed 'y,ab/,ab%,'
もできる。
352:350
10/08/17 23:26:44 .net
そうか、区切り文字変えられるのsコマンドばかりじゃないんですね。
どうもありがとうございました。
353:初心者
10/10/23 20:01:51 .net
sedでシェルすくりぷとの行つなぎバックスラッシューを消して、繋ぐことできますか?
perlなら-pe "s/\\\n//g"でできます。
edでも、awkでもできれば、教えていただけませんか?
354:名無しさん@お腹いっぱい。
10/10/24 13:40:00 .net
できる
355:初心者
10/10/24 21:13:33 .net
できました ありがとう
356:初心者
10/10/25 22:07:05 .net
できないようですね、残念です。
357:名無しさん@お腹いっぱい。
10/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:名無しさん@お腹いっぱい。
10/10/28 08:37:34 .net
踊っているように見えて仕方がない
echo "000000$NUM" | sed -e 's/.*\(..\)\(..\)\(..\)/\1\2\3/'
359:名無しさん@お腹いっぱい。
10/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:名無しさん@お腹いっぱい。
10/11/28 18:39:52 .net
sed -ne '1,50w sample1.txt' -e '51,$w sample2.txt' < sample.txt
とか?
361:名無しさん@お腹いっぱい。
10/11/28 18:48:58 .net
split -50 sample.txt; mv xaa sample1.txt; mv xab sample2.txt
362:名無しさん@お腹いっぱい。
10/11/28 19:52:27 .net
>>360,361
ありがとうございました。勉強になります。
363:名無しさん@お腹いっぱい。
10/12/22 23:54:50 .net
入力テキストを
1行目の内容 2行目の内容
2行目の内容 3行目の内容
:
最終-2行目の内容 最終-1行の内容
最終-1行目の内容 最終行の内容
という形(隣り合った行の値を空白で連結する)に変換するにはどう書けば
よいでしょうか。
sed -ne '1!p;$!p'
と通せば先頭末尾以外の行を2回出力できたので、
これを2行分ずつくっつければ出来そうなのですが…
364:名無しさん@お腹いっぱい。
10/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:名無しさん@お腹いっぱい。
10/12/23 00:47:03 .net
seq 1 10 | sed -ne '1h;1!{H;x;s/\n/ /;p}'
366:名無しさん@お腹いっぱい。
10/12/26 21:44:54 .net
s/seq/jot/
367:名無しさん@お腹いっぱい。
11/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:名無しさん@お腹いっぱい。
11/01/15 11:49:07 .net
>>367
確かに。それじゃぁ一番左側の .* が、最長一致で行全体に一致しちゃうから、
並びが変わらなくて正解。
悪書の書名晒して。
369:名無しさん@お腹いっぱい。
11/01/15 11:50:52 .net
久野さんらしくないミスだな。
確かに変わらないね。
370:名無しさん@お腹いっぱい。
11/01/15 11:51:32 .net
>>367
真中の * の直前のスペース、
スペース2つじゃないの?
コピペするとスペースが1つとかになるので注意。
371:名無しさん@お腹いっぱい。
11/01/15 11:54:36 .net
これかな? URLリンク(www.amazon.co.jp)
久野先生の本だけど、そんなのが混ざってるのか。
372:名無しさん@お腹いっぱい。
11/01/15 12:01:42 .net
>>371
はいそれです。解説にも
「これはどう読むかというと、『入力行を任意の文字列1と、空白のならび2と、また別の任意の文字列3
にマッチさせ、それ全体を3、2、1の順でつなげたものに置き換える』という意味になる。」と書いてあります。
373:名無しさん@お腹いっぱい。
11/01/15 12:06:04 .net
>>372
なら、>>370の指摘通りで、キミが間違っている。
× sed 's/\(.*\)\( *\)\(.*\)/\3\2\1/' test.txt
○ sed 's/\(.*\)\( *\)\(.*\)/\3\2\1/' test.txt
374:名無しさん@お腹いっぱい。
11/01/15 12:10:21 .net
2chに不慣れな感じ
375:名無しさん@お腹いっぱい。
11/01/15 12:11:56 .net
專ブラなら安価ポップアップでちゃんと表示されるのかな
>>373
376:名無しさん@お腹いっぱい。
11/01/15 12:14:12 .net
>>372
紙面上に、└┘└┘みたいな感じでスペースの個数は明示してあるの?
明示してないなら紙面が悪いと思うが。
377:名無しさん@お腹いっぱい。
11/01/15 12:36:36 .net
>>373
空白2個ならいけるのですか。
>>376
そういう、└┘└┘みたいな感じはなかったです。文字数的にも一文字分の感じ
ですし。編集上のミスかもしれませんけど。
378:名無しさん@お腹いっぱい。
11/01/15 14:25:37 .net
>>376
> 「これはどう読むかというと、『...、空白のならび2と、...
って書いてあるんだろ?
379:名無しさん@お腹いっぱい。
11/01/15 14:29:14 .net
>>378
それは、¥2 のこと。「スペース2個」のことじゃないよ。
380:名無しさん@お腹いっぱい。
11/01/15 14:31:27 .net
>>378 空白のならび
381:名無しさん@お腹いっぱい。
11/01/15 14:34:38 .net
>>378
正規表現を理解してないバカ発見。
任意の文字列 → \1
空白の並び → \2
別の任意の文字列 → \3
と言ってるだけのこと。それとスペース2つ書くのとは意味が違う。
382:名無しさん@お腹いっぱい。
11/01/15 14:44:12 .net
むしろhtmlのレンダリングを理解していない
383:名無しさん@お腹いっぱい。
11/03/25 20:16:28.23 .net
任意の文字列の前か後ろの少なくともどちらかは、任意でない特定の文字・文字列(含^$)でないと困ったことになるということですね?
俺も前それで失敗した。
384:名無しさん@お腹いっぱい。
11/04/21 06:41:06.41 .net
sedの話題はこっちへ
くれぐれもシェルスクリプトスレに書き込まないように!
385:名無しさん@お腹いっぱい。
11/04/21 13:17:24.83 .net
>>377
\2,\3がφで全体がマッチ
\1に行全体
一つ目が\([^ ]*\)ならよかった。
386: 忍法帖【Lv=38,xxxPT】 【東電 69.2 %】 株価【E】
11/04/27 08:53:07.51 .net
AAA BBB=111 CCC=111
この行の111を000に置き換えするのに
sed -e 's/BBB=111/BBB=000/'
とする以外にもっとスマートな書式を教えてください。
GNU sedです
387:名無しさん@お腹いっぱい。
11/04/27 12:11:27.62 .net
>>386
sed -e "s/1/0/g"
388:名無しさん@お腹いっぱい。
11/04/27 12:35:36.38 .net
>>386
> sed -e 's/BBB=111/BBB=000/'
これじゃ、お題
> この行の111を000に置き換えするのに
を満たさない。
矛盾を含む質問に答えることは不可能。
389:386
11/04/27 13:29:23.92 .net
>この行の111を000に置き換えするのに
この行のBBB=111だけをBBB=000にする書式でした
すいません。
390:名無しさん@お腹いっぱい。
11/04/27 13:52:24.65 .net
スマートの基準がわからないけど、BBBが二度出現するのが嫌なら
sed -e 's/\(BBB\)=111/\1=000/'
391:名無しさん@お腹いっぱい。
11/04/27 14:59:23.65 .net
>>386
s/111 /000 / で十分
392:名無しさん@お腹いっぱい。
11/04/27 16:29:55.08 .net
AAA BBB=111 CCC=111 DDD=111 EEE=1111
393:名無しさん@お腹いっぱい。
11/04/27 19:10:11.78 .net
sed -e /BBB=/{'s/111/000/'}
シェルスクリプトスレで覚えたやり方
394:名無しさん@お腹いっぱい。
11/05/18 23:11:59.71 .net
sed -e 's/<space><space>*/<space>/g' test.txt
って動かないんですが?
395:名無しさん@お腹いっぱい。
11/05/19 09:49:48.72 .net
動きますよ?
396:名無しさん@お腹いっぱい。
11/05/19 10:16:19.05 .net
EUCだとうまく動作しないのだが、これはデフォルトなのかな
397:名無しさん@お腹いっぱい。
11/05/19 10:19:25.96 .net
EUCでも問題ないけど。
398:名無しさん@お腹いっぱい。
11/05/19 17:40:32.75 .net
そもそも、EUCはそういうツールで不都合がないようにということで作られたわけで。
日本語独特の文節や漢字などに対応しない、というのはあるけど。
399:名無しさん@お腹いっぱい。
11/05/19 18:16:12.59 .net
>>396
> うまく動作しない
How?
400:名無しさん@お腹いっぱい。
11/05/19 18:31:23.35 .net
<space> ってそのまま打ってるってオチだろw
401:名無しさん@お腹いっぱい。
11/05/19 19:04:04.07 .net
>400
そのとおりでした;すいません
402:名無しさん@お腹いっぱい。
11/05/19 19:05:53.32 .net
EUCじゃないファイルではうまくいってたのか?
403:401
11/05/19 20:27:32.13 .net
>402 それは別人です
404:401
11/05/30 17:29:13.86 .net
偽物ばかり
氏ね
405:名無しさん@お腹いっぱい。
11/09/09 13:29:22.13 .net
急に Windows 7 64 bit で ssed が使えなくなっま。
406:名無しさん@お腹いっぱい。
11/09/12 17:43:29.52 .net
で?
407:名無しさん@お腹いっぱい。
11/09/26 15:16:39.67 .net
xp モードで解決したわけですね
408:名無しさん@お腹いっぱい。
11/11/30 13:06:39.22 .net
tab8のテキストをインデントを崩さずに半角スペースに置き換えるにはどうすればいいですか?
409:名無しさん@お腹いっぱい。
11/11/30 14:42:23.70 .net
expand -8
410:名無しさん@お腹いっぱい。
11/11/30 14:49:05.34 .net
sedで、じゃね。
411:名無しさん@お腹いっぱい。
11/11/30 14:57:37.44 .net
エスパーすると質問者は手段はsedじゃなくても良いと考えてる
412:名無しさん@お腹いっぱい。
11/11/30 14:58:33.13 .net
それならこのスレで聞かないでしょ。
413:名無しさん@お腹いっぱい。
11/11/30 15:01:50.53 .net
sedでもできそうだと勘違いしたからでしょ
414:名無しさん@お腹いっぱい。
11/11/30 15:08:26.12 .net
>>410
それなら「expand -8相当の処理をsedでやるには?」って聞くでしょ。
415:名無しさん@お腹いっぱい。
11/11/30 15:34:39.95 .net
>>414
expand を知らなかった、という可能性は。
416:名無しさん@お腹いっぱい。
11/11/30 15:38:55.31 .net
>>415
というかexpandを知らなかったからこそ
「tab8のテキストをインデントを崩さずに…」みたいな
まわりくどい言い方で聞いたんでしょ。
だからsedに関係なくexpandを回答すれば回答として十分。
417:名無しさん@お腹いっぱい。
11/11/30 15:49:38.28 .net
>>408
そろそろ正解を。
418:名無しさん@お腹いっぱい。
11/11/30 15:50:50.14 .net
>>416
expandを知らないけどsedを使わなければならない理由があるんだよ!
419:408
11/11/30 17:44:22.28 .net
すっごく登場しにくくなったけど>>415さんが正解です。
>>409
エスパーさんありがとう。
皆さん混乱させてスイマセンでした。置き換えと言えばsedしか知らなかったので。
420:名無しさん@お腹いっぱい。
12/04/06 20:12:58.82 .net
文字列unkoの行を見つけてから文字列chinkoの行まで表示
ってどうやればいいの?
421:名無しさん@お腹いっぱい。
12/04/06 20:38:54.03 .net
>>420
当たり前過ぎるから回答は控えるけど、
エスパーすると -n オプション忘れて全部の行が表示されてしまったってオチだろな
422:名無しさん@お腹いっぱい。
12/04/06 23:35:46.08 .net
そんなことなくてその当たり前すぎる内容がわからない初心者さんなんでしょう。
回答してあげないなんてひどいね
423:名無しさん@お腹いっぱい。
12/04/07 07:37:37.99 .net
>>421
あ、-n だけのことだったんですね。失礼しました。
>>422
そこまで初心者じゃないです。
424:名無しさん@お腹いっぱい。
12/04/07 08:46:29.91 .net
自己申告乙
425:名無しさん@お腹いっぱい。
12/04/08 06:16:06.93 .net
初心者の土瓶口だけど、chinkoの前の行まで表示 ってのはできるの?
426:名無しさん@お腹いっぱい。
12/04/08 06:20:31.95 .net
>>425
/start/,/end/{/end/!p}
427:名無しさん@お腹いっぱい。
12/04/08 08:34:53.99 .net
>>426
いや、それは知ってるよ。
そういうことせずに直接○○の行の手前まで指定はできないのか聞いてるんだが
428:名無しさん@お腹いっぱい。
12/04/08 16:24:07.33 .net
unkoの次の行から、ってのは難しいのかな・・・
429:名無しさん@お腹いっぱい。
12/04/08 16:42:05.75 .net
>>428
startを含まず、endを含む場合
sed -n '1,/start/b; 1,/end/p'
430:名無しさん@お腹いっぱい。
12/04/09 11:14:30.69 .net
みんな1行野郎なの? スクリプトファイルは書かないの?
431:名無しさん@お腹いっぱい。
12/04/10 11:14:22.67 .net
>>430
スクリプト書くほどならperlで書いちゃう
432:名無しさん@お腹いっぱい。
12/04/11 03:53:49.91 .net
perlは英語のマニュアルが読めなくて挫折した。あんときperlがんばっとけばよかったorz
433:名無しさん@お腹いっぱい。
12/04/11 08:09:32.29 .net
書くよ
434:名無しさん@お腹いっぱい。
12/04/13 05:52:55.50 .net
DTPでテキストの整形するとき、いっぱい痴漢(←なぜか第一候補)するよ。
435:名無しさん@お腹いっぱい。
12/04/13 18:41:21.71 .net
>>432
俺はPerlは書籍で覚えたな、ラクダとあと何かUnixツールとして使うための本
436:名無しさん@お腹いっぱい。
12/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:名無しさん@お腹いっぱい。
12/08/07 00:42:37.55 .net
パターンスペースが
空行だったらホールドスペースに追加
空行でなかったらホールドスペースを出力後にパターンスペース出力
最後の連続空行はホールドスペースに収まったままで終わる。
とか考えてみたがあってるだろうか。
438:名無しさん@お腹いっぱい。
12/08/07 03:04:20.52 .net
Nコマンドを使っていて必要な最期の行を全部すっとばしたことが、私にもありました
439:名無しさん@お腹いっぱい。
12/08/07 22:00:53.40 .net
>>437
多分やりたいのはそれだと思います。
具体的に同書けばいいのでしょう?
440:名無しさん@お腹いっぱい。
12/08/08 02:01:32.99 .net
もうawkかなにかで済ましてるだろうけど練習
437とは違うやり方になった
sed -n -e '
:loop
/^\n*$/{
N
b loop
}
p
'
441:名無しさん@お腹いっぱい。
12/08/08 21:26:58.20 .net
>>440
ありがとうございます!
うまくいきました。
442:名無しさん@お腹いっぱい。
12/08/17 16:05:21.04 .net
gsedですが、
ブラケット開きがあって、ブラケット閉じ以外のものが1つ以上あって、ブラケット閉じがある場合、
で、これどこがおかしいのでしょうか? ★☆が現れてくれないんですけど。
s/\[\([^\]][^\]]*\)]/[★\1☆]/g
443:名無しさん@お腹いっぱい。
12/08/17 16:29:03.18 .net
>>442
バックスラッシュが余計
sed 's/\[\([^]][^]]*\)]/[★\1☆]/g'
444:名無しさん@お腹いっぱい。
12/08/17 16:43:13.83 .net
ありがとうございます。
つまり、[ と ] の間にあるものはどんなものでも
「これは文字です」と宣言しなくてもいい(\が要らない)ということですか。
やってみます。ありがとうございました。
445:名無しさん@お腹いっぱい。
12/08/17 16:45:03.71 .net
>>444
そうなんだけど、] の場合は、[^ の直後にある場合のみ
普通の文字の ] とみなすという仕様。( [ の直後でも同様)
446:名無しさん@お腹いっぱい。
12/08/17 18:35:40.56 .net
テキスト [aaa], [bbb] <あああ>の(アアア)と<いいい>の(イイイ)
欲しい結果 ★aaa☆, ★bbb☆ ★あああ☆の★アアア☆と★いいい☆の★イイイ☆
s/[<[(]\([^<>[]()][^<>[]()]*\)[>])]/★\1☆/g
予想はしたけど、まるで反応してくれません。
半角の約物3種類は欲張ったかなあ、と1つずつやってみているところです。
447:名無しさん@お腹いっぱい。
12/08/17 18:37:54.56 .net
>>446
>>445 に書いてあること読めよ。
[^ の直後に ] を置かないと、普通の文字としては認識されないんだよ。
[^....] の中の .... の順番を変えろということ。
448:名無しさん@お腹いっぱい。
12/08/17 18:41:47.66 .net
>>446
s/[[<(]\([^]<>()][^]<>()]*\)[]>)]/★\1☆/g
449:名無しさん@お腹いっぱい。
12/08/18 03:20:55.76 .net
>>447-448
ああ、すみません。言葉が足りませんでした。読んだ上でわざと変えてみたのです。
450:名無しさん@お腹いっぱい。
12/08/19 00:04:02.62 .net
え?
451:名無しさん@お腹いっぱい。
12/08/20 16:08:01.31 .net
ごめんなさい。>>446は[]の中の[]に全部\を付けたつもりでした(このミスが大元ですね)
エスケープすればどの位置にあっても文字とするというsedを使っていたのと、
最長一致の正規表現も使っていたので混乱してしまいました。
「直後」を何度も言われていたのに、「直後『だけ』」に思いが至りませんでした。
452:名無しさん@お腹いっぱい。
12/10/25 06:00:58.34 .net
gsed で、置換コマンドの s を間違えて a と入力したスクリプトを実行したら、
一行ごとにその行が挿入されていて笑ってしまった。
a コマンドなんて知らなかったわ。
453:名無しさん@お腹いっぱい。
12/10/25 06:04:10.00 .net
笑えんなぁ。
454:名無しさん@お腹いっぱい。
12/10/25 06:09:46.09 .net
笑って許して♪
455:名無しさん@お腹いっぱい。
12/10/25 06:45:25.34 .net
gsed って置換するときにタグの数が合ってなくてもエラーが出ないのね。
456:名無しさん@お腹いっぱい。
12/10/25 23:53:29.32 .net
aなんて、edの基本じゃん!
457:名無しさん@お腹いっぱい。
12/10/27 12:38:13.67 .net
マニュアルでも最初のほうに来ちゃうしね
458:名無しさん@お腹いっぱい。
12/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:名無しさん@お腹いっぱい。
12/11/05 10:26:48.87 .net
sedでやるのは無理があるんじゃないか。
460:名無しさん@お腹いっぱい。
12/11/05 12:39:56.92 .net
>>459
いや、なせば成る
461:名無しさん@お腹いっぱい。
12/11/05 13:24:25.09 .net
cat aaa | sed -e ':loop; N; N; !b loop; s/^<hoge>\n abc\n<\/hoge>//'
これで良いのかな?
462:名無しさん@お腹いっぱい。
12/11/05 14:31:53.41 .net
>>459-461
ありがとうございます
しかし削除できませんでした
ちなみにsedじゃなくて何でやったほうがいいでしょうか?
463:名無しさん@お腹いっぱい。
12/11/05 14:34:20.66 .net
Perl でも Ruby でも何でもいいよ。
464:名無しさん@お腹いっぱい。
12/11/05 14:56:37.97 .net
>>463
はい。ありがとうございます。できればシェルスクリプトで書きたいので
PerlでもRubyでも何でもいいとは思いますがそれ以外でいいコマンドはありませんでしょうか?
465:名無しさん@お腹いっぱい。
12/11/05 15:19:40.83 .net
grep -n abc して、出てきた数字でsedスクリプト作っちゃうとか。
466:名無しさん@お腹いっぱい。
12/11/05 15:53:27.99 .net
>>464
シェルスクリプトから呼び出せば良いんじゃないの?
sedだって所詮は外部コマンドだし。
467:名無しさん@お腹いっぱい。
12/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:名無しさん@お腹いっぱい。
12/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:名無しさん@お腹いっぱい。
12/11/20 09:09:15.11 .net
すみません。教えて下さい。
テキストの最終行のあとに空白行を1行入れる、というのはどう書くのでしょうか。
iコマンドでは最終行の前に空白行ができてしまいます。
470:名無しさん@お腹いっぱい。
12/11/20 09:23:56.98 .net
sed -e '$a\
hoge
'
471:名無しさん@お腹いっぱい。
12/11/20 09:30:53.76 .net
ありがとう。助かりました。
472:名無しさん@お腹いっぱい。
12/11/22 01:22:12.85 .net
最終行の後なら
$ cat >> tmp
$
で十分であるようにも思うけどなぁ
473:名無しさん@お腹いっぱい。
12/11/22 03:29:10.92 .net
ああ、なるほど。いつか思い出して使うこともあるでしょう。ありがとう。
474:名無しさん@お腹いっぱい。
12/11/22 07:19:23.18 .net
>>472
1行追加ならechoの方が楽でね?
475:名無しさん@お腹いっぱい。
12/11/22 11:59:50.11 .net
そうなんだけど、sedファイルの中に書き込みたかったんですよ。でも、ありがと
476:名無しさん@お腹いっぱい。
13/01/04 10:51:16.73 .net
optimized sed
URLリンク(www.commandlinefu.com)
巨大ファイル対象の場合は
sed '/foo/ s/foo/foobar/g' <filename>
が
sed 's/foo/foobar/g' <filename>
よりも効率がよいとの事ですが、どういう原理でそうなるんでしょうか
477:名無しさん@お腹いっぱい。
13/01/04 12:52:49.06 .net
"foo"の在る行だけを対象にするから?
どのみち見つけに行くんだから同じじゃん?と想ったり想わなかったり
478:名無しさん@お腹いっぱい。
13/01/04 12:55:13.46 .net
>>476
100万行のテキストファイル、GNU版のsedで試してみたけど
どっちも変わらなかったぞ
479:名無しさん@お腹いっぱい。
13/01/05 01:12:15.15 .net
つまり、都市伝説って事か
どのsedかによっても違うんだろう
480:名無しさん@お腹いっぱい。
13/01/05 09:49:03.44 .net
対象になる行の割合にもよるんじゃないの?
481:478
13/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:名無しさん@お腹いっぱい。
13/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:名無しさん@お腹いっぱい。
13/04/08 05:56:57.86 .net
人それぞれ
で良いんじゃない
484:名無しさん@お腹いっぱい。
13/05/21 06:44:35.71 .net
Macでgsedを使っています。やりたいこと
★のある行と☆のある行の間にある行のうち、ひらかなを含む行の行頭に@を付ける。
(ひらかなが1文字でも入っていれば良い)
/★/,/☆/{
/[あ-ん]/s/^/@/
}
無視されてしまうんです。助けてください。
485:484
13/05/21 08:34:08.57 .net
[あ-ん]がいけなかったみたいです。[あいうえお(中略)ん、。]でできました。
486:名無しさん@お腹いっぱい。
13/05/21 13:23:01.78 .net
あ-ん♪
487:名無しさん@お腹いっぱい。
13/05/21 16:08:58.36 .net
>>484
ぽーつ使ってるならssed入れてpcre環境にすれば\p{Hiragana}とか
できるんじゃね
488:名無しさん@お腹いっぱい。
13/05/22 03:36:42.23 .net
ごめんワカンナイ
489:名無しさん@お腹いっぱい。
13/05/22 16:53:09.99 .net
ssedって次期GNU sedのこと。
GNUのページでもこの拡張には依存するなって書いてる。
ただ、macでBSD系のsedじゃなくGNU sed使ってるんなら
port依存って意味ではあんまり変わんないんじゃない?
490:名無しさん@お腹いっぱい。
14/03/04 03:45:38.92 .net
>>334
横から&亀だが
sed '/pattern/ {
'"`sed 's/^/i\\\\\n/' <file`"'
}'
491:名無しさん@お腹いっぱい。
14/06/28 14:33:09.63 .net
>>491
UNIX板で答えない方が良いのかもしれませんが、適当なスレが無さそうなので
windows のコマンドプロンプトで実行しているとして答えます。
cmd.exe の仕様が原因と思われる
sed -e "s/^/ "^""/" hoge.txt > hoge2.txt
492:名無しさん@お腹いっぱい。
14/06/28 14:56:57.91 .net
sedを使用する際の注意事項があります。
コンピュータのCPUが何ビットであるか調ベておく事が大切です。
32ビットCPUを搭載したコンピュータには、
32ビット用のsedをインストールすること。
64ビットCPUを搭載したコンピュータには、
64ビット用のsedをインストールすること。
これを間違えれば正常にsedが動作しません。
493:名無しさん@お腹いっぱい。
14/08/20 00:07:25.20 .net
sedの使い方がわからず、試行錯誤しているのですが、うまくいきません。
行の先頭に特定の文字列(たとえば"abc")があったらその行を丸ごと"xxxxxxxxxxx"に置換するにはどうすれば良いでしょうか。
例:
abc123456
が
xxxxxxxxxxx
に変換さえるイメージです。
494:名無しさん@お腹いっぱい。
14/08/20 01:37:59.80 .net
>>493
sed -n /^abc/p
sed s/^abc.*$/xxxxxxxxxxx/
495:名無しさん@お腹いっぱい。
14/08/20 01:39:49.69 .net
パイプで使うバージョンを書く
|sed 's/^abc.*/xxxxxxxxxxx/'
496:名無しさん@お腹いっぱい。
14/08/20 02:29:51.22 .net
sed '/^abc/cxxxxxxxxxxx'
497:名無しさん@お腹いっぱい。
14/08/20 03:06:02.58 .net
abc -> xxx
abc123 -> xxxxxx
abc12345 -> xxxxxxxx
をsedでやるならどう書くんだろ
498:名無しさん@お腹いっぱい。
14/08/20 06:22:02.63 .net
>>497
s/./x/g
499:名無しさん@お腹いっぱい。
14/08/20 10:13:13.33 .net
>>493
sed '/^abc/s/./x/g'
かな?
500:名無しさん@お腹いっぱい。
14/09/17 02:37:37.33 .net
パスワードのゼロ埋め(ゼロパディング)と見た。
501:名無しさん@お腹いっぱい。
14/10/21 08:56:25.00 .net
バックスラッシュって読みやすいか?日本語だと使い道無いし。
プログラミングで正規表現書いてると、
s/\dhoge\sfuga\s/hoge/
↑似たような記号ばっかりで読みづらいw
s/¥dhoge¥sfuga¥s/hoge/
↑こっちのほうが読みやすい
502:名無しさん@お腹いっぱい。
14/10/21 10:00:39.43 .net
使い道ある記号だったらエスケープシーケンスにも
円記号ねじ込むにも適さなかっただろうよ
503:名無しさん@お腹いっぱい。
14/10/21 11:48:25.80 .net
最近可愛く見えてきた。意味を持たない組み合わせに腹を立てたり。
504:名無しさん@お腹いっぱい。
14/10/21 13:00:32.47 .net
スラッシュとバックスラッシュが紛らわしいんならスラッシュ以外の
文字を区切りに使えばいいんでないの?
505:名無しさん@お腹いっぱい。
14/10/21 13:05:36.87 .net
区切りを変更できるのはsコマンドとかの時だけ
506:名無しさん@お腹いっぱい。
14/11/06 07:19:05.88 .net
1,/hoge/ のようにaddressに正規表現を使う時のスラッシュを
他の記号に変えることはできますか?
s@URLリンク(@)<)) のようなことをしたいのです
507:名無しさん@お腹いっぱい。
14/11/06 08:27:36.11 .net
>>505 にあるようにできない。
508:名無しさん@お腹いっぱい。
14/11/06 08:42:54.81 .net
できる実装もあるかもしれない
509:名無しさん@お腹いっぱい。
14/11/06 09:21:40.14 .net
コピペ改変にかまうな
510:名無しさん@お腹いっぱい。
14/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:名無しさん@お腹いっぱい。
14/12/23 19:23:47.26 .net
s,.*/,,; s,\.txt.*,,
512:名無しさん@お腹いっぱい。
14/12/24 15:41:51.14 .net
ありがとう
513:名無しさん@お腹いっぱい。
14/12/28 06:55:35.52 .net
>>506
1,\@hoge@
linuxで確認済み
検索でここにたどり着いた人の為と、何処のコピペか検索してもそれらしいものが出なかったので、貼っておきます
POSIX
sed
URLリンク(pubs.opengroup.org)
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"
URLリンク(www.jp.freebsd.org)
1. コンテキストアドレスにおいて、バックスラッシュ (``\'') と改行以外の 文字を正規表現の区切りとして用いることできます。
区切り文字の直前に バックスラッシュを置くことで、区切り文字をリテラルに解釈させることが できます。
たとえば、コンテキストアドレス \xabc\xdefx において、区切 り文字は ``x'' で、2つめの ``x'' は ``x'' という文字を表します。
よっ て、正規表現は ``abcxdef'' と解釈されます。
LINUX
Man page of SED
URLリンク(linuxjm.sourceforge.jp)
/regexp/
正規表現 regexp にマッチした行にマッチする。
\cregexpc
正規表現 regexp にマッチした行にマッチする。c には任意の文字を指定できる。
514:名無しさん@お腹いっぱい。
14/12/28 17:04:08.20 .net
おおお、グレート義太夫
515:名無しさん@お腹いっぱい。
16/02/10 23:22:09.08 .net
どうにも理解が出来ず教えて欲しいのですが
URLリンク(sed.sourceforge.net)
から
# print paragraph if it contains AAA (blank lines separate paragraphs)
sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;'
これがどうにもわかりません。
H;$!d;の$!dが何故必要なのか?
動作の流れを教えて頂けないでしょうか?
516:516
16/02/21 00:09:27.85 .net
age
517:名無しさん@お腹いっぱい。
16/02/21 01:34:16.62 .net
タダで教えろって?
518:名無しさん@お腹いっぱい。
16/02/21 10:27:51.16 .net
dがあるのは段落の区切りまで何も出力させないため
ファイル末尾も段落の区切りだから$!が要る
ファイル末尾に必ず空行があるなら$!は要らない
dでそのサイクルが終了することは知ってますね?
519:名無しさん@お腹いっぱい。
16/02/21 10:54:53.96 .net
10日も呆けーと待ってたことに驚き
520:名無しさん@お腹いっぱい。
16/02/21 13:02:47.07 .net
でも教えてもらえたじゃないかw
521:名無しさん@お腹いっぱい。
16/02/21 14:02:51.01 .net
自分で試せば小一時間で気付くのに、と思う
522:516
16/02/21 16:55:28.79 .net
>>518
有り難うございます。助かりました。
!dをpの様に認識してしまっていて次のサイクルに移行させる
イメージがなく、$!dを最終行を表示させるとしか思ってなくて
色々試してもどうにも腑に落ちないもので質問させて頂きました。
523:名無しさん@お腹いっぱい。
16/04/28 22:19:31.31 .net
sedで桁そろえってどうしたらいいですかる
具体的にはls -l で出てきた結果のうち、ファイル名を最初に左揃え、ファイルサイズを右揃えで出力したいのですが、
sedコマンドだけで可能ですか?
524:名無しさん@お腹いっぱい。
16/04/29 06:51:34.85 .net
そういうのは awk で。
525:名無しさん@お腹いっぱい。
16/04/29 07:15:23.81 .net
どうしてもsedだけでやたいんです!
お願いします!
526:名無しさん@お腹いっぱい。
16/04/29 07:58:13.44 .net
UNIX哲学に戻るんだ。
1つのことをうまくやる、ものを組み合わせればいいんだから、まずはawkでやってみる。
527:名無しさん@お腹いっぱい。
16/04/29 08:26:18.75 .net
awkでもいいが、シェル内部コマンドだけでもできるぞ。
ls -l | while read m l u g s t1 t2 t3 f
do
printf
528:名無しさん@お腹いっぱい。
16/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:名無しさん@お腹いっぱい。
16/04/29 09:51:04.97 .net
FreeBSD$ stat -f %-20N%8z *
Linux$ stat -c %-20n%8s *
530:名無しさん@お腹いっぱい。
16/04/29 10:02:30.45 .net
sedでの右揃えは、一旦中身のみを切り出してから左側に余分なスペースを加えてから
右から文字数固定で切り取る。
左揃えはその逆。
531:名無しさん@お腹いっぱい。
16/08/11 22:51:26.97 .net
>>144の更新 NetBSDとOpenBSDの標準sedで-iが導入。
入力ファイルを書き換えるには?
・-i オプションをつかう
・-i オプションがないsedをつかっているなら in-place editing 対応の sed の導入を検討する
・ed を使うことを検討する
・perl を使うことを検討する
・一時ファイルを必要としないファイル命名法を検討する
・URLリンク(www.idaemons.org) を使う
・(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:名無しさん@お腹いっぱい。
17/03/17 14:26:32.28 .net
データハンドリングとしては、
入力ファイルをコピーして更新をかける
更新処理が終わったら、入力ファイルを削除して更新ファイルをりネームして入力ファイルとする
みたいな方法で必要十分。
なんでもかんでもツールで処理するのではなく、OSが得意な機能はOSのものを使う。
クラッシュがいつ起こってもデータが確保できるのは、そういう、むしろドンくさい方法。
お遊びならいざしらず、仕事では安全確実性が少しでも高い方を選ぶのがプロ。
無論、履歴から復元なんてのも、データによっては必要だが、
処理が複雑になれば、一般的にトラブルも増える。
どこまで何をやるかは、ひとえにそのデータの重要性にかかっている。
バックアップから戻してもたいした事がないなら、何やってもいいだろう。
533:名無しさん@そうだ選挙に行こう! Go to vote!
17/10/22 14:32:07.16 .net
>>274
どうだろうね。数式の入った文章を写植
は、昔の印刷物のほうが上でしょ。
印刷屋に頼んでもtexの設定をそのまま
つかわずindesignに読み込むから、
ひどいものだ
534:名無しさん@そうだ選挙に行こう! Go to vote!
17/10/22 15:59:51.51 .net
昔も今もTeXでやってくれる印刷屋に頼めばいいじゃん。
535:名無しさん@お腹いっぱい。
17/12/08 20:25:27.67 .net
今も昔も餅屋のふりした餅屋はたくさんあるからな~。餅の見る目のない会社だったってことで。
536:名無しさん@お腹いっぱい。
17/12/29 10:21:45.77 .net
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。
グーグル検索⇒『宮本のゴウリエセレレ』
8DL33JQ0HX
537:名無しさん@お腹いっぱい。
18/01/18 12:08:00.54 .net
スレリンク(unix板)
ここから来ました。
sedでiフラグとdフラグを両方立てることってできないのでしょうか。
$ cat file
aaa
AAA
$ cat file | sed -e '/aaa/id'
AAA
d
aaa
538:名無しさん@お腹いっぱい。
18/01/18 12:57:27.52 .net
頑張って /[Aa]\{3\}/d と書く
今時の正規表現修飾子とか使えるsedがあるなら俺も知りたい
539:538
18/01/18 13:11:30.41 .net
>>538
ありがとうございます。とりあえずその路線で行きます。
素人目にはiフラグとdフラグを同時に使えないというのは極めて不自然というか
非対称な気もしますが……
二つの役割は直交関係にあって,別に依存・背反はないと思うんですよねぇ。
540:名無しさん@お腹いっぱい。
18/01/18 16:19:03.70 .net
GNU sedなら I 大文字が使えるじゃあないか
541:538
18/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:名無しさん@お腹いっぱい。
18/01/19 06:11:37.28 .net
iもdもコマンドじゃないの?
543:542
18/01/19 16:10:54.99 .net
>>542
あーその通りですわ。
逆になぜ id で大文字小文字を無視して削除ができると思ったのか疑問なくらい阿呆でした……。
精進し直します。
# 素人考えで言うと「大文字小文字を無視して検索→その行でコマンド実行」なんて頻繁に実行するだろうに
それに対応した機能が (POSIXの範囲で) 存在しないってのはちょっと頂けないですねぇ……
# 尤も上級者の方々は他の,もっと優美な方法を採ってらっしゃるのかも知れませんが。
544:名無しさん@お腹いっぱい。
18/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:名無しさん@お腹いっぱい。
18/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:名無しさん@お腹いっぱい。
18/02/14 10:22:09.93 .net
☆ 日本の、改憲をしましょう。現在、衆議員と参議院の両院で、
改憲議員が3分の2を超えております。『憲法改正国民投票法』、
でググってみてください。国会の発議はすでに可能です。
平和は勝ち取るものです。お願い致します。☆☆
547:名無しさん@お腹いっぱい。
18/05/22 03:04:16.83 .net
知り合いから教えてもらったパソコン一台でお金持ちになれるやり方
時間がある方はみてもいいかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
9M87D
548:名無しさん@お腹いっぱい。
18/08/28 06:46:05.19 .net
sedとawkとgrepの違いって?
549:名無しさん@お腹いっぱい。
18/08/31 10:07:25.21 .net
sedはストリームエディタ
grepは文字列検索
awkはスクリプト言語
550:名無しさん@お腹いっぱい。
18/12/13 22:08:13.14 .net
| sed -n -e "/<station /h;/<prog /{N;G;s/\n//gp}" ^
この行の後ろに<pfm>から始まる行をくっつけたいんですが、
すごく難しくてどうやっても出来ないです
どうやればいいんでしょうか?
551:名無しさん@お腹いっぱい。
18/12/14 00:16:49.36 .net
イマイチやりたいことがわからず
それに頭の | と尻の ^ はなんざんす
それが行ってことざんすか
552:名無しさん@お腹いっぱい。
18/12/14 00:49:07.99 .net
>>551
nkf.exeを併用しているバッチ内のコードをコピペしただけなので、|と^は関係ないです
>>550ではxmlファイル内の「<station~>タグで始まる行」と
「<prog~>タグで始まる行+その次の行」を1行の文字列に連結しているので、
さらにその後ろに<pfm>タグで始まる行を連結して1行にしたい、ということです
(この後に正規表現で最終的にcsv形式に置換しますが割愛)
553:名無しさん@お腹いっぱい。
18/12/15 09:02:56.15 .net
| sed -n -e "/<station /h;/<prog /{N;G;s/\n//gp}" ^ <pfm>
くっついた!
554:名無しさん@お腹いっぱい。
18/12/15 19:39:46.09 .net
あ、できたのでもういいです
555:名無しさん@お腹いっぱい。
19/02/09 12:27:35.91 .net
10年以上前にファイル内容を逆順に表示するスクリプトコピペしたけど '1!G;h;$!d'
未だに内容理解できてないぜ!
556:名無しさん@お腹いっぱい。
19/02/09 12:28:51.42 .net
556
スクリプトというかコマンドだな
557:名無しさん@お腹いっぱい。
19/02/09 13:34:35.65 .net
便利なの持ってんじゃん
tacでいいような気もするけど
558:名無しさん@お腹いっぱい。
19/03/12 05:03:42.07 .net
短くても難読すごいから可能ならtacのたぐい、基存のコマンドで処理したい
559:名無しさん@お腹いっぱい。
19/03/19 12:52:18.64 .net
GNU sedじゃなくて、BSDsedをビルドしたい。
OS付属の/usr/binソースはあるけど
URLリンク(github.com)
sed単体がない。
ビルド出来るBSDsedのURLを教えてください
560:名無しさん@お腹いっぱい。
19/03/19 13:05:15.53 .net
そこの使えばいいんじゃないの
Makefileは適当に改変するとして
561:名無しさん@お腹いっぱい。
19/03/19 13:55:05.58 .net
>>560
make -f MakefileしだんたけどカレントディレクトリのMakefileはそのままでは使えなかった。
オプションが必要なのかも知れないが、よくわからず。
562:名無しさん@お腹いっぱい。
19/03/19 19:46:54.93 .net
>>561
FreeBSD のソース用の Makefile は BSD make 用で GNU make では使えないよ。
なんの OS を使ってるのかわからいけど、
pkgsrc が対応している OS なら pkgsrc 導入して、
textproc/nbsed をインストールするのが一番楽だと思う。
URLリンク(pkgsrc.org)
563:名無しさん@お腹いっぱい。
19/03/20 04:19:12.82 .net
>>562
MacOSです。ソース側で単体ビルドできる用意されていれば出来ると考えました。
早速挑戦して上手く行ったらここに報告します。
564:名無しさん@お腹いっぱい。
19/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:名無しさん@お腹いっぱい。
19/03/20 04:45:39.59 .net
Makefileの中見てgcc一発でも行けんだろって気がするが
って自分は前それやってみた気もするが
それくらい試せよ
566:名無しさん@お腹いっぱい。
19/03/20 07:03:53.34 .net
>>565
確か、Linux のcore utilとかだとconfigure sedみたいなかんじで、コマンドの単独コンパイルできる。
manにかかれているメアドでBSDの本家に問い合わせたら
単独コンパイル出来ないとの返事だった。OSビルド用らしい
もう消してしまったが、成功した人がいたら教えてほしい。方法がわかれば再試行する気はあります
567:名無しさん@お腹いっぱい。
19/03/20 07:04:29.16 .net
ごめん、もうsageるべきだった
568:名無しさん@お腹いっぱい。
19/03/26 09:49:12.30 .net
別にageでもいいよ
569:名無しさん@お腹いっぱい。
19/06/24 23:38:04.88 .net
正規表現一致した行と,その一致した行と4行後のみを抽出とかってどうすればいいですか?
570:名無しさん@お腹いっぱい。
19/06/25 13:21:07.60 .net
-n '/re/{p;n;n;n;n;p;}'
とか?
571:名無しさん@お腹いっぱい。
19/06/27 17:00:14.56 .net
*.cと*.hを落として
gcc -I . compile.c main.c misc.c process.c -o sed
するとmain.cの__unreachable();がリンクエラーになるけど
URLリンク(github.com)を参考に((void)0);に置き換えればビルドできるじゃん
572:名無しさん@お腹いっぱい。
19/07/02 15:24:44.16 .net
>>571
有難う。諦めていたけど早速やってみます。
573:名無しさん@お腹いっぱい。
19/07/02 22:35:36.02 .net
560です。572のとおりビルドできました。
インストール済のMac版sedは2004年頃なのでバージョンアップできて助かります。
これから100近くあるソースを調べます。
linux版との互換性ない記述を書いてしまいました。
gnu sedもMac上ではビルドできていませんが諦め。
574:名無しさん@お腹いっぱい。
19/07/02 23:46:07.78 .net
マジかよ
gnu sedなんてそれこそ./configureしてmakeだけじゃん
--program-prefix=gくらいつけといた方がいいだろけどさ
575:名無しさん@お腹いっぱい。
19/07/02 23:47:55.81 .net
あー、なんかつい誘導されちゃった感じ...
576:名無しさん@お腹いっぱい。
19/07/03 01:18:23.32 .net
>>574
560です。エラー、コピペしていいですか?長いんですけど。。。
577:名無しさん@お腹いっぱい。
19/07/03 03:40:41.85 .net
gnu sed もインストール出来ました。
bash_profileのパスを最小限にしたらエラーがなくなったみたい?
578:名無しさん@お腹いっぱい。
19/07/03 03:41:36.40 .net
>>576質問は取り消します。有難うございました。
579:30GBでも大丈夫 thanks sed
19/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:名無しさん@お腹いっぱい。
21/09/08 17:50:49.92 .net
sedのホールドスペースは、その内容を削除するにはどうすれば?
とりあえずs/.//g;xでできたけど、もっと直接的なやりかたはないんかなー、と。
581:名無しさん@お腹いっぱい。
21/09/08 17:54:36.56 .net
sedスクリプトファイルでよく使われる拡張子はあります?
ほとんどコマンドラインに-eで書ききるものでしょうが、あえてファイルにするとしたらやっぱりsed?
582:名無しさん@お腹いっぱい。
21/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:名無しさん@お腹いっぱい。
21/12/25 09:35:07.03 .net
ところでgnu sedの付録のdc.sedってのやばいなこれ
興味深いけど誰か注釈付けてくれたりしてないのか
584:名無しさん@お腹いっぱい。
23/02/05 22:38:55.04 .net
onigsed がダウンロードできなくて困ってます。
585:名無しさん@お腹いっぱい。
23/09/30 14:56:35.67 .net
(@д@)/?.うそ~!””
586:名無しさん@お腹いっぱい。
24/03/27 19:48:02.41 .net
たどり着けない境地だ
587:名無しさん@お腹いっぱい。
24/03/27 19:55:02.09 .net
それらが引退した人も逮捕されてるの見つかって捕まって誰かに相手されないもんね
ヒスンは凄く特殊な銃を使って
588:名無しさん@お腹いっぱい。
24/03/27 21:38:04.20 .net
4232
じり下げはやめて良い部屋は空いてるんだったら
胃がびっくりしておかしくなる
家庭崩壊する
それが政治とどう関係あるのが信じられなくなったから焦った
589:名無しさん@お腹いっぱい。
24/04/01 17:36:13.18 .net
awkについて語るスレ $3
スレリンク(tech板)
590:名無しさん@お腹いっぱい。
24/05/30 11:15:41.15 .net
pcre使えるsedある?
591:名無しさん@お腹いっぱい。
24/05/30 19:55:34.18 .net
URLリンク(github.com)
はイケてるんかな
592:名無しさん@お腹いっぱい。
24/08/13 08:10:10.49 .net
sed '/削除したい行/d'
で「削除したい行」は削除されるが、「削除したい行」の1行前から2行後迄削除したい場合は、どう書くの?
593:名無しさん@お腹いっぱい。
24/08/13 09:58:16.91 .net
grepだと複数行はAオプションがあるけど、sedは複数行は無理なんじゃないかな
594:名無しさん@お腹いっぱい。
24/08/13 10:50:05.64 .net
>>593
質問の前提を変更するっち。以下、
sed '/削除したい行/,+2d'
で、GNU sedでは「削除したい行」から2行後まで削除されるが、
595:名無しさん@お腹いっぱい。
24/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:名無しさん@お腹いっぱい。
24/08/13 23:44:44.87 .net
複数行、出来るんだ
知らなかった
597:名無しさん@お腹いっぱい。
24/08/14 05:52:06.53 .net
その手のためだけに,plan9のsamを使ってた.
598:593
24/08/14 19:02:06.33 .net
>>595
ありがとう。
# でも全然解らん...
599:名無しさん@お腹いっぱい。
24/08/14 20:18:50.75 .net
仕組みを学ぶのは後で、やりたいことが実現できるならいいでしょ
sudo \rm -rf /
とかを躊躇無く実行しちゃうみたいなのは危険だけど
600:名無しさん@お腹いっぱい。
24/08/15 01:15:03.31 .net
"削除したい行"行が連続する場合
前1行がない場合
後2行がない場合
601:593
24/08/15 08:30:40.41 .net
>>600
仕様を明確化せよという意味だべか。
「削除したい行」の1行前から2行後迄の削除対象「範囲」は、1ファイルのどこかに必ず1箇所存在する。なのでその3条件は無い。
602:名無しさん@お腹いっぱい。
24/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:名無しさん@お腹いっぱい。
24/08/15 18:59:31.57 .net
sed '$!N;/削除したい行/,+2d;P;D;'
604:名無しさん@お腹いっぱい。
24/08/15 22:15:36.30 .net
sed 'H;1h;$!d;x; s/^\([^\n]*\n\)\{0,1\}削除したい行\(\n[^\n]*\)\{0,2\}\n\?//m;'
605:名無しさん@お腹いっぱい。
25/04/27 17:41:15.94 .net
I sed.