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.