2ch勢いランキング 全部 1- 最新50

sed


名無しさん@お腹いっぱい。 [] NGNG
sedスレッド
名無しさん@お腹いっぱい。 [] NGNG
2
名無しさん@お腹いっぱい。 [sage] NGNG
sed -e '1,2d' -e '4,$d'
名無しさん@お腹いっぱい。 [sage] NGNG
sed -E -e '=' test | sed -E 'N;s/\n/: /' | sed -E 's/^([0-9]: )/0\1/'

これをパイプを使わずに表現したいんですけど、どうすれば出来ますか?
名無しさん@お腹いっぱい。 [] NGNG
sedのスクリプトで?
sed -f hoge test
なかんじ?
4 [sage] NGNG

はい。
#!/usr/bin/sed -f
{
=
N
s/\n/: /
s/^([0-9]: )/0\1/
}

としてもうまく行かなくて悩んでいます。
名無しさん@お腹いっぱい。 [sage] NGNG
適材適所という言葉があるだろうに…

% awk '{printf "%02d: %s\n", NR, $0}' test
4 [sage] NGNG
例えば
aaa\
bbb\
ccc
ddd\
eee

の\が出てくると次の行と連結するスクリプトは

#!/usr/bin/sed -f
:cont
/\\$/{
N
s/\\\n//
b cont
}
の様にすれば
aaabbbccc
dddeee
のようにうまく出力されるのに、

#!/usr/bin/sed -f
{
=
N
s/\n/: /
s/^([0-9]: )/0\1/
}

みたいに、先頭に2桁の行番号と:を追加するのはなぜうまく出来ないのか
疑問に思ったのです。
名無しさん@お腹いっぱい。 [sage] NGNG
ム板のawkスレの住人だな?
名無しさん@お腹いっぱい。 [sage] NGNG
ttp://pc5.2ch.net/test/read.cgi/linux/1067815570/
名無しさん@お腹いっぱい。 [sage] NGNG
【貝】第1回シェル講座【殻】
ttp://pc5.2ch.net/test/read.cgi/unix/1016372780/
☆シェルスクリプトを勉強するにあたって☆
ttp://pc5.2ch.net/test/read.cgi/unix/989659936/

ここらへんに合流すれば? そういう話題結構でてるよ
これだけではなんなので。日本語で読める sed に関する文献としては
「MS-DOS を 256倍使うための本 Vol.3」が No.1 です。おすすめ
名無しさん@お腹いっぱい。 [sage] NGNG
古いけどそこそこ良くまとまったサイトを紹介してみよ。
ttp://www.gcd.org/sengoku/sedlec/
名無しさん@お腹いっぱい。 [] NGNG
メールの中身で
添付ファイルのデータが開始するbase64という文字列があった後のデータ全部切り抜いて出力したいんですが
sedで可能でしょうか?
名無しさん@お腹いっぱい。 [sage] NGNG

ttp://www.gcd.org/sengoku/sedlec/12.txt
名無しさん@お腹いっぱい。 [] NGNG
From: hoge hage <hoge@moe.com>
↑ これの < > の中に入ってるメールアドレスを、抜き出したいんですが、どうすればいいでしょうか?
名無しさん@お腹いっぱい。 [sage] NGNG
sed 's/.*From.*<\(.*\)>.*/\1/'
じゃダメ?
15 [] NGNG
>16
ありがとうございます
後は加工して使おうと思います。
名無しさん@お腹いっぱい。 [] NGNG
ど素人です。
sedでMIFESのグローバル置換みたいなことってできないですか?
あるディレクトリに存在する複数のファイルをワイルドカード指定で入力して
一括して置換してもとのファイルにリダイレクトしてやるみたいな。
下記のイメージで(下記はとおらないですけど・・)。
sed -e 's/aaa/zzz/g' < * > *
1日中ぐぐってぐぐってもがいたけどわかりませんでした。すごいひと教えてください。
名無しさん@お腹いっぱい。 [sage] NGNG
すごくなくてもできる。とりあえず、シェルスクリプトすれに池。
もっと短くできるが、何をやっているかわかりやすく説明するのをかねて↓

find -type f | while read file ; do
mv ${file} ${file}.backup
cat ${file}.backup | sed -e "s/aaa/zzz/g" > ${file}
done
名無しさん@お腹いっぱい。 [sage] NGNG
次世代sed登場
ttp://news.tbs.co.jp/newseye/tbs_newseye1037945.html
名無しさん@お腹いっぱい。 [sage] NGNG

おわっ。あっさりできたっ。どうもありがとです!
シェルスクリプトすごい便利。勉強しなきゃですね・・。
名無しさん@お腹いっぱい。 [sage] NGNG
bash上でなのですが、
hoge=`echo ../tmp/work.c | sed 's/\//\\\//g'`
を実行しようとすると、
sed: -e expression #1, char 9: Unknown option to 's'
となってしまうのは、なぜですか?

/を\/に置換したいだけなのです。
名無しさん@お腹いっぱい。 [sage] NGNG

sed 関係ないやん
\ → \\
名無しさん@お腹いっぱい。 [sage] NGNG
うーん、確かにシェル向けのネタなのかもですが、
echo ../tmp/work.c | sed 's/\//\\\//g'
だけだと動くのがよくわからなくって。
名無しさん@お腹いっぱい。 [sage] NGNG
いいことを教えてあげよう。
's@hoge@hage@g'とやってごらん。
名無しさん@お腹いっぱい。 [sage] NGNG
command not found
でした・・・って、そういう意味ではないのかな・・・。
名無しさん@お腹いっぱい。 [sage] NGNG
s/..../..../g は s@....@....@g とも書ける

という意味
名無しさん [sage] NGNG
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda5             9.6G  844M  8.3G  10% /

というのを
~$ df /home/ | sed -n -e "2s/.*\(\d*\)%.*/<\1>/p"
として10を取り出したいのですがうまくいきません
結果は
<>
となります
どうすればいいのでしょうか?
名無しさん@お腹いっぱい。 [] NGNG
space, tab を区切りにして何番目の要素って選択したほうがいいんじゃないの。
名無しさん@お腹いっぱい。 [sage] NGNG
先頭の.* が % の直前までマッチし、
\d* が長さ0、
% が % にマッチ、
最後の .* が残りの部分にマッチしてるからね。
名無しさん@お腹いっぱい。 [sage] NGNG
そもそも \d なんて使える sed あんの?
名無しさん@お腹いっぱい。 [sage] NGNG
sedsedesedesedesed
名無しさん@お腹いっぱい。 [] NGNG
sed(sede){3}sed
名無しさん@お腹いっぱい。 [] NGNG
hosyu
名無しさん@お腹いっぱい。 [sage] NGNG
しーずか〜な〜しーずかな〜
さーとのーあ〜きぃ〜
おーsed〜にきぃ〜のみが〜
お〜ちる〜よ〜は〜
名無しさん@お腹いっぱい。 [] NGNG
ttp://www.chimimo.com/sed/
名無しさん@お腹いっぱい。 [sage] NGNG
sedは日暮れて〜夕波小波〜
BBQ [vt100] 05/01/27 15:19:10
temp.txt中の"-"と"+"以外の文字を空白に変換するには


sed 's/[^\-\+]/ /g' temp.txt


でうまくいきますが、temp.txt中の"-"と"+"と数字以外の文字を空白に変換するには

どう記述すればよいのでしょうか

sed 's/[^\-\+0-9]/ /g' temp.txt

では文法エラーになってしまいます。
BBQ [vt100] 05/01/27 15:31:07


+と−の順番が逆でした。
以下に訂正。

temp.txt中の"-"と"+"以外の文字を空白に変換するには


sed 's/[^\+\-]/ /g' temp.txt


でうまくいきますが、temp.txt中の"-"と"+"と数字以外の文字を空白に変換するには

どう記述すればよいのでしょうか

sed 's/[^\+\-0-9]/ /g' temp.txt

では文法エラーになってしまいます。
名無しさん@お腹いっぱい。 [sage] 05/01/27 15:31:45
うちの OS だと、ならんけど?
まあ
sed 's/[^-+0-9]/ /g' temp.txt
って書いた方が簡潔だとは思うが。
BBQ [vt100] 05/01/27 15:55:36


> うちの OS だと、ならんけど?
> まあ
> sed 's/[^-+0-9]/ /g' temp.txt
> って書いた方が簡潔だとは思うが。


Cygwin についてくるsed です。

sed 's/[^-+0-9]/ /g' temp.txt

これは問題なく正常動作しました。

名無しさん@お腹いっぱい。 [] 05/01/27 21:55:24

>
>
> > うちの 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の間にあるコードと解釈されるらしい。
名無しさん@お腹いっぱい。 [sage] 05/01/27 22:13:09

> sed 's/[^+-0-9]/ /g' temp.txt にするとだめです。
仕様です.
ttp://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=re_format&dir=jpman-5.2.0%2Fman§=0
名無しさん@お腹いっぱい。 [sage] 05/01/27 22:15:19
すまん url 化けてた.
ttp://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=re_format&dir=jpman-5.2.0%2Fman§=0
名無しさん@お腹いっぱい。 [sage] 05/01/28 13:57:06
なんでperl使わないの?
名無しさん@お腹いっぱい。 [sage] 05/01/28 17:44:42

どうやって、perl おぼえた?
名無しさん@お腹いっぱい。 [sage] 05/01/28 18:02:57
なんでperl使うの?
名無しさん@お腹いっぱい。 [sage] 05/01/28 18:10:23
らくだ本に一万円投資しちゃったからとか。
名無しさん@お腹いっぱい。 [sage] 05/01/28 18:15:54
どうやって perl インストールしたの?
名無しさん@お腹いっぱい。 [sage] 05/01/30 00:56:27
インストールできなかったの?
名無しさん@お腹いっぱい。 [] 2005/03/24(木) 05:43:55
FreeBSD の sed って c コマンドの後のコマンドも実行するね。
これってバグじゃね?
名無しさん@お腹いっぱい。 [sage] 2005/03/24(木) 09:44:49

意味不明.
名無しさん@お腹いっぱい。 [sage] 2005/03/26(土) 16:20:20
perlは、難しいので
sed & awkでやって逝く事にしました。
名無しさん@お腹いっぱい。 [sage] 2005/03/26(土) 17:23:11
適材適所ってこともあるんだよもん。
名無しさん@お腹いっぱい。 [sage] 2005/03/29(火) 16:37:56

若者は、PERLを消化して部位部位いわせsed&AWK何それ?状態
案外、sed&AWKを学ぶ必要がなかったりする?

新しいのについて行けずに、たちどまってしまったオッサンは、sed&AWK
せめてPERLぐらいやる。だだでえくいっぱぐれてるのに

両方の言語を使用したことのあるエキスパートに意見を伺いたい
sed&AWKなら簡単にできてPERLなら難しい処理例
PERLなら簡単にできてsed&AWKなら難しい処理例
若者、おっさんに向けての指針等など
名無しさん@お腹いっぱい。 [sage] 2005/03/29(火) 21:20:02
sed 's/hoge/hage/'
のほうが
perl -pe 's/hoge/hage/'
より短い。
名無しさん@お腹いっぱい。 [sage] 2005/03/29(火) 22:01:24
ぐれてないでまず日本語を学ぶ >だだでえくいっぱ
名無しさん@お腹いっぱい。 [sage] 2005/03/30(水) 12:32:32
大岡山のキティに英語の勉強しろといわれたので、伊藤和夫先生のテキストで勉強しました

-xx-xx-xxなperlは、使用しない故スティーブンス先生にも意見を聞きたいので

召還ヨロシク
名無しさん@お腹いっぱい。 [sage] 2005/03/30(水) 14:06:53
は浪人生
名無しさん@お腹おっぱい。 [sage] 2005/04/21(木) 22:37:43
sed 's/い/お/g' file
で、
file内の「いっぱい」が「おっぱい」に置換されるのは、

正 常 !
名無しさん@お腹いっぱい。 [sage] 2005/04/21(木) 23:05:31
s/い/お/g ←「g」付きだと置換結果は「おっぱお」じゃないの?
名無しさん@お腹いっぱい。 [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 とするにはどうすれば良いのでしょうか。

よろしくお願いします。
名無しさん@お腹いっぱい。 [sage] 2005/05/09(月) 16:38:04

man sed しました?
man sed の SEE ALSO 見ると、
GNU sed が regex(7) (POSIX 1003.2) に (大体) 準拠してるとあると思いますが、
POSIX 1003.2 に non greedy な量指定子は無いです。

何か他の方法をとる必要があるかと。
名無しさん@お腹いっぱい。 [sage] 2005/05/09(月) 17:17:44
ありがとうございます、とりあえず>62に関しては
's/uge,[^,]*,//'
とすることにします。
名無しさん@お腹いっぱい。 [] 2005/05/10(火) 18:46:02
abc xyzをaxbyczにしたいのですが
名無しさん@お腹いっぱい。 [sage] 2005/05/10(火) 19:18:22

> 大岡山のキティに英語の勉強しろといわれたので、伊藤和夫先生のテキストで勉強しました

だれ?
名無しさん@お腹いっぱい。 [sage] 2005/05/10(火) 20:56:07
sed 's/abc xyz/axbycz/'
名無しさん@お腹いっぱい。 [sage] 2005/05/18(水) 10:04:29

echo abc xyz |sed -e "s/^/%/; :ll; s/[%]\(.\)\(.*\) \(.\)\(.*\)/\1\3%\2 \4/; tll; s/%//;"
名無しさん@お腹いっぱい。 [sage] 2005/05/18(水) 17:29:04


>だれ? は、

>大岡山のキティ
>伊藤和夫

の以上2つのうち誰の素性を知りたいのだね?
名無しさん@お腹いっぱい。 [sage] 2005/05/18(水) 19:10:25
68は「大岡山のキティ」本人で複数の人間に「英語の勉強しろ」と言っていた、
という可能性は無いの。
名無しさん@お腹いっぱい。 [sage] 2005/05/20(金) 15:37:59

「大岡山のキティ」に心当たりがあるなら のためにも、sedのsコマンドで「大岡山のキティ」を痴漢するってのは如何

名無しさん@お腹いっぱい。 [sage] 2005/05/27(金) 13:57:14
GNU sedのVersion 4で、マルチバイトパッチをあてたVsersion 3みたく文字コー
ドを決めうちして変換する(ctype=EUCみたいに)方法はないのでしょうか。
jiskan16.bdfに外字を足してテキスト処理をやっているのですが、行頭に外字の
コードがくると、Version 4.1.4では誤認識してしまうのをなんとかしたいのです
が。
名無しさん@お腹いっぱい。 [sage] 2005/05/27(金) 18:46:29
grepもUTF-8使えるようになって欲すい。
名無しさん@お腹いっぱい。 [sage] 2005/05/27(金) 19:03:08
FreeBSDでutf-8なロケールでgrep使えばOK。

名無しさん@お腹いっぱい。 [sage] 2005/05/28(土) 20:35:52
sedで四則演算系は作れますか? 理由も教えてください。
名無しさん@お腹いっぱい。 [sage] 2005/05/28(土) 22:09:07
宿題は自分で。
名無しさん@お腹いっぱい。 [sage] 2005/05/29(日) 00:01:58


bashを使っているとして、LANG=ja_jp.eucJP sed -e "s/hogehoge/fugaguga/"
みたいなのじゃダメなの?
名無しさん@お腹いっぱい。 [sage] 2005/05/29(日) 07:50:40

分からないのならレスすんな。
名無しさん@お腹いっぱい。 [sage] 2005/05/29(日) 08:47:11
煽っても無駄ですよ。宿題は自分で。
名無しさん@お腹いっぱい。 [sage] 2005/05/29(日) 08:48:54
75に答えているので78はレスしないでください。
名無しさん@お腹いっぱい。 [sage] 2005/05/29(日) 13:38:42


情報小出しですみません。LNAGは設定してます。
ググってもsedの古いソースがみつからなかったので、とりあえずは、Vine2.6
の3.0.2 (だかなんだかの)のバイナリを入れて動かしてますんで、当面は困っ
てはいないのですが、システムのバージョン上げるときに、個別対応する項目
が増えるのは面倒だなと思って質問した次第です。
名無しさん@お腹いっぱい。 [sage] 2005/05/30(月) 01:02:38


GNU sedは4.xでマルチバイト文字対応が別の形で入ってるからね。
3.Xのローカライズパッチではそれほど厳密には検査されなかった
文字範囲が厳しくなってる可能性がある。

内部的には wide character に変換してごにょごにょしてるんだけど、
外字だとここでひっかかるのかもね。最悪自分でソースに手を入れて
wrapper関数書くしかないかも(外字をPUAにわりあてちゃうとか)。
名無しさん@お腹いっぱい。 [] 2005/05/31(火) 23:18:23


> ググってもsedの古いソースがみつからなかったので、

Ring server にあらかたのバージョンあったよ。
もちろん日本語対応パッチはそこにはないんだけど
(これはほかを探せばある)。
名無しさん@お腹いっぱい。 [] 2005/06/10(金) 22:45:51
ttp://pc8.2ch.net/test/read.cgi/unix/1113664637/298
Nで次の行もパターンスペースに読み込んでいた場合に、
d と D の違いが出る。
名無しさん@お腹いっぱい。 [sage] 2005/06/10(金) 22:56:05

ありがとう
名無しさん@お腹いっぱい。 [sage] 2005/06/10(金) 23:23:16
,85
Nに加えて、sなどで意図的にパターンスペースに改行を入れることもあるよ。
Nを行の先読みに例えれば、後者は行の差込み挿入のような意図で行うんだけど。
その場合にもdとDの違いが出る。
名無しさん@お腹いっぱい。 [] 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由来だからここで伺ってます
すみません
名無しさん@お腹いっぱい。 [sage] 2005/07/15(金) 11:53:16

nkf じゃだめなん?
名無しさん@お腹いっぱい。 [sage] 2005/07/15(金) 12:15:30

UNIX上のsedなら、それでちゃんと動作するよ。
87 [] 2005/07/15(金) 13:03:54

すみません、nkfで上記の置換を行う方法がわかりません
よければ教えてください


可能であれば、windowsで動作した方がいろいろと好都合
ですので...
名無しさん@お腹いっぱい。 [sage] 2005/07/15(金) 13:21:49

UNIX上のsedでは動作

sedの文法はそれで間違ってない

Win版のsedのバグまたは仕様

UNIX板でこれ以上聞いても無駄
87 [] 2005/07/15(金) 13:23:40
88、89さん申し訳ありません
wiodows上でのsedでも87のsed置換は可能です
私の勘違いでした

改めて質問させていただきます

設定済みmeadowを使って
リージョンを設定して
M+shift+|で87のsedスクリプトを走らせた場合
\になってほしい部分が化けてしまいます

原因や対処方法がおわかりに方がいらっしゃったら
ご教示願えませんでしょうか?
名無しさん@お腹いっぱい。 [sage] 2005/07/15(金) 13:28:00
set-process-coding-system
87 [] 2005/07/15(金) 13:52:19

ヒントありがとうございます

上述したように
リージョンにコマンドを渡す方法を使う場合

set-process-coding-systemの記述は

どこに、こんな風に記述すればよろしいのでしょうか?

頭が悪いので設定方法がわかりません
よろしければ教えてください
名無しさん@お腹いっぱい。 [sage] 2005/07/15(金) 14:31:39

ずっと効くから.emacs に書いとけ。
名無しさん@お腹いっぱい。 [] 2005/07/17(日) 00:37:09

半角かなばっかりの文書を置換するのはできるみたいですが
漢字が混じってたら漢字は化けます
対処方法がありますか?
名無しさん@お腹いっぱい。 [sage] 2005/07/17(日) 04:56:30

> 対処方法がありますか?

おまえ朝鮮人のにおいがぷんぷんするんだが。
やっぱり朝鮮人だったか。おねがいだから、国に帰ってくれ。
名無しさん@お腹いっぱい。 [sage] 2005/08/02(火) 11:01:13
sed /^$/q

が「最初の空行までを出力する」ということで、メールのファイルからヘッダ部分を
抜き出すのに使えることがわかったのですが、その逆「最初の空行から後を出力
する」のはどうするのがよいでしょうか?

「sed ではなく○○を使え」とかいうことになるのかもしれませんが……
名無しさん@お腹いっぱい。 [sage] 2005/08/02(火) 11:42:31
sed '1,/^$/d'
98 [sage] 2005/08/03(水) 00:43:23
>99
なるほど。「最初から空行までを削除する」と読むわけですか。

98の「空行が見つかったら終了する」も奥が深いと思ったのですが、まだまだ精進が
足りませんね。ありがとうございました。
名無しさん@お腹いっぱい。 [] 2005/08/30(火) 15:38:56
age
名無しさん@お腹いっぱい。 [sage] 2005/08/31(水) 16:15:27
1行野郎どっさり
ttp://www.student.northpark.edu/pemente/sed/sed1line52.txt
名無しさん@お腹いっぱい。 [] 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
と出力されてしまいます.
うまい方法はありませんか?
名無しさん@お腹いっぱい。 [sage] 2005/10/12(水) 15:44:31
{\(.*\)}の部分が最長マッチしちゃんだから、ここのマッチが}で切れるよう
{\([^}]*\)}に変えればいい。
103 [sage] 2005/10/12(水) 15:47:46

なるほど!
どうもありがとうございます.
名無しさん@お腹いっぱい。 [] 2005/11/24(木) 20:57:48
コマンドラインオプションの -n がよく理解できないんですが、どういう場面で使えばいいんでしょうか
名無しさん@お腹いっぱい。 [sage] 2005/11/24(木) 21:06:03
matchしたところだけくださいってな場面
名無しさん@お腹いっぱい。 [sage] 2005/11/24(木) 21:44:39
sedを「セド」と呼ぶぽ
名無しさん@お腹いっぱい。 [sage] 2005/11/25(金) 01:55:29
設定ファイルのコメントを除くときとか
名無しさん@お腹いっぱい。 [sage] 2006/01/06(金) 04:53:17
sedってホールドスペースは1個しか使えないの?
名無しさん@お腹いっぱい。 [sage] 2006/01/06(金) 06:52:12

yes
名無しさん@お腹いっぱい。 [sage] 2006/01/06(金) 08:45:14

否定疑問文だから、英語で答えるなら
"No" が正解だろ。
名無しさん@お腹いっぱい。 [sage] 2006/01/06(金) 10:24:18

はい。
名無しさん@お腹いっぱい。 [sage] 2006/01/06(金) 10:37:46

Thank you all.
知恵と勇気と愛でなんとかしてみる
名無しさん@お腹いっぱい。 [sage] 2006/01/06(金) 18:30:00
否定疑問文に
「んなことない」みたいな答え方はどうしたらいい?
名無しさん@お腹いっぱい。 [sage] 2006/01/06(金) 18:35:30

■スレッド立てるまでもない質問スレッド Part112◆
ttp://academy4.2ch.net/test/read.cgi/english/1136133816/
名無しさん@お腹いっぱい。 [sage] 2006/01/06(金) 18:42:23
112は最近英語を知った厨房にすぎない
名無しさん@お腹いっぱい。 [sage] 2006/01/06(金) 19:12:12

Yes. と答えればいいだけ。
名無しさん@お腹いっぱい。 [sage] 2006/01/06(金) 19:39:41

「んなことない」= "There is no such Japanese zither."
名無しさん@お腹いっぱい。 [] 2006/02/08(水) 18:38:37
@
名無しさん@お腹いっぱい。 [sage] 2006/02/08(水) 19:42:26
ウナコーワ足んない
名無しさん@お腹いっぱい。 [] 2006/04/12(水) 02:41:13
深夜上げ
名無しさん@お腹いっぱい。 [] 2006/08/22(火) 16:18:15
ウムムム
名無しさん@お腹いっぱい。 [sage] 2006/11/03(金) 09:37:20
同じ文字が3文字連続していたら表示したいのだが
名無しさん@お腹いっぱい。 [sage] 2006/11/04(土) 02:04:43

ttp://pc8.2ch.net/test/read.cgi/unix/1039165754/600
名無しさん@お腹いっぱい。 [age] 2006/11/14(火) 20:28:59
grep, sed, awk
ttp://www.shuwasystem.co.jp/books/wwwsrch/cgi-bin/content/794/index.htm
この本ってどうですか?
単なるマニュアル以上の情報は載ってる?
名無しさん@お腹いっぱい。 [sage] 2006/11/14(火) 20:59:20
このシリーズはなんとなく印象が悪いので手にとってないな。そういえば。
名無しさん@お腹いっぱい。 [] 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

ご存知でしたら、ご教授ください。
よろしくお願いします。
名無しさん@お腹いっぱい。 [sage] 2006/11/18(土) 11:48:03

sed 's/\(...\)\(...\)/^\1,\2/' file1.txt | egrep -f- -v aaa.csv
名無しさん@お腹いっぱい。 [sage] 2006/11/18(土) 12:30:05

突っ込みだけでスマン。それだと、
111,222999999999,333,444
なんていうのがaaa.csvにあると、これも削除されるぞ。

数字の桁数が自由か固定かあいまいながいけないんだが、
sedの置換先は /^\1,\2,/ みたいなんの方が安全と思う。

名無しさん@お腹いっぱい。 [] 2006/11/18(土) 20:48:36
さんありがとうございました。
大変、参考になります。
私の説明がいけなかったのですが、
aaa.csvの1カラム目と2カラム目は固定ではなく、自由です。
ですので、
--aaa.csv--
11111,2222,333,444
55,666666,777,888
のような場合もあるのです。

また、file1.txtのほうも固定ではなく、
--file1.txt--
1111111222
555666
2233333
とスペースが入っている場合すらあります。

度々で恐縮ですが、
ご存知でしたら、ご教授ください。
よろしくお願いします。

名無しさん@お腹いっぱい。 [sage] 2006/11/18(土) 23:16:33

仕事で必要ならコンサルタントを雇いなさい。
名無しさん@お腹いっぱい。 [sage] 2006/11/19(日) 01:09:53
perl かなんかで書いちゃった方が早いよ。
名無しさん@お腹いっぱい。 [sage] 2006/11/19(日) 07:09:03
sed,awk=perlかなんか
名無しさん@お腹いっぱい。 [sage] 2006/11/28(火) 22:11:41
職場のマシン、perlが入ってなかった・・・ orz
名無しさん@お腹いっぱい。 [sage] 2006/11/28(火) 22:52:45
この場合は、sedよりawkなんかな?
awkで書いてスピードアップのためのawkccしてしまうとか。
名無しさん@お腹いっぱい。 [] 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
}
}
-----------------------------------------------------
名無しさん@お腹いっぱい。 [] 2006/12/07(木) 20:54:41

awk -f test.awk -v HENSU=${HENSU}
じゃね?
確認はできんが
名無しさん@お腹いっぱい。 [] 2007/02/04(日) 08:46:50
ある文字列を
現在時間+引数
に置換したいのですが、どのようにすればいいですか?

perlを使えば簡単なんだけど、職場のマシンでperl が入ってなかった(汗)

ちなみに、sed とawk は使えるみたいです。
名無しさん@お腹いっぱい。 [sage] 2007/02/06(火) 00:47:03

引数によるけど、dateコマンドが使えてたら、OKでは。
$ date +%R
00:45
$ date --date '6 min ago' +%R
00:39
という感じで引数を与えるといけると思う
名無しさん@お腹いっぱい。 [] 2007/02/11(日) 21:34:20
入力ファイルを書き換えることはできる?

% sed 's/ABC/abc/' input.txt > output.txt
よくある上のようなプログラム(と呼ぶのかな?)で、
出力をoutput.txt
じゃなくてinput.txt のファイル自身を書き換えたいんだけど、可能かな?

つまり、余計なファイルは出力させたくないんだよ。
名無しさん@お腹いっぱい。 [sage] 2007/02/11(日) 21:46:12


a.in-place オプションが使えるバージョンのsedを使う
b.inplaceというコマンドをつかってみる
c. (rm hoge.dat; sed 's/aaa/bbb/' > hoge.dat) < hoge.dat

あるいは
ttp://pc10.2ch.net/test/read.cgi/unix/1157601611/708-727
あたりを参照
141 [] 2007/02/11(日) 21:57:51

情報サンクス
a. の方法を用いました
名無しさん@お腹いっぱい。 [sage] 2007/02/11(日) 22:27:47
問題解決したようだけどこぴぺして編集

・-i オプションをつかう
・-i オプションがないsedをつかっているなら in-place editing 対応の sed の導入を検討する
・ed をつかう
・perl を使う
・一時ファイルを必要としないファイル命名法を検討する
ttp://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 オプションは無い)

名無しさん@お腹いっぱい。 [sage] 2007/02/11(日) 23:12:50

まとめ乙
名無しさん@お腹いっぱい。 [sage] 2007/02/26(月) 05:04:17
あってもなくてもいい追加
HP-UX 11i Version 2: September 2004
ttp://docs.hp.com/ja/B2355-90851/sed.1.html
AIX 5L Version 5.2
ttp://inetsd01.boulder.ibm.com/doc_link/en_US/a_doc_lib/cmds/aixcmds5/sed.htm
SunOS 5.10
ttp://docs.sun.com/app/docs/doc/819-1210/6n3j74jsr?q=sed&a=view

いづれも 標準 sed に -i オプションは無い
名無しさん@お腹いっぱい。 [sage] 2007/02/27(火) 15:18:51
irix
ttp://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650&db=man&fname=/usr/share/catman/u_man/cat1/sed.z&srch=sed
名無しさん@お腹いっぱい。 [sage] 2007/04/16(月) 23:15:15
仕事で root してる人に質問です。
皆さんどれぐらい仕事で sed スクリプト書いてます?

スクリプトの後々のメンテナンスと、既に周囲に読める人があまり
居ないこととを考えると、s での置換以外では perl を使うか、そ
うなったらもう全部 perl にした方がいいのかなと最近思ったりし
ます。

6行の sed スクリプトを書いたのですが、コメントが 8 行になっ
てしまって。。。
名無しさん@お腹いっぱい。 [sage] 2007/04/17(火) 00:51:04
sedで複数行書くのは犯罪だ。awkで書こう
名無しさん@お腹いっぱい。 [sage] 2007/04/17(火) 00:55:39
そんなん読めないやつに管理まかせちゃいかんよ。
名無しさん@お腹いっぱい。 [sage] 2007/04/18(水) 23:42:12

すぐに読めなくても、それがsedのスクリプトであることを書いておけば、
perlを使えるひとならちょっとの手間で読めるようになるでしょ。
そうでなければということに。

それから、6行のスクリプトのコメントが8行になっても、それはそれでいいじゃないか。
名無しさん@お腹いっぱい。 [sage] 2007/04/19(木) 01:05:48
sedの複数行は本当に頭痛がしてくる。
perでlさえ可読性悪いと言われてるのにその比じゃない。
個人的趣味以外で書いてはいけない
名無しさん@お腹いっぱい。 [sage] 2007/04/21(土) 01:38:29
sed のコードのそばに、
それを perl なり awk なりで書いたものを
コメントとして残せば
・可読性→クリア
・コメント行数→クリア
・メンテ→工数倍w
名無しさん@お腹いっぱい。 [sage] 2007/04/21(土) 03:10:13
s2pでいいじゃん、とかおもったりおもわなかったり
名無しさん@お腹いっぱい。 [sage] 2007/05/08(火) 00:15:31
sedで千行あるファイルの
100行目から150行目を
抜き出すには
どうしたらいいですか
名無しさん@お腹いっぱい。 [sage] 2007/05/08(火) 00:17:32
sed -ne "100,150p"
名無しさん@お腹いっぱい。 [sage] 2007/05/08(火) 11:04:38
sed -n 100,150p
名無しさん@お腹いっぱい。 [] 2007/06/04(月) 20:43:16
単語の置換をしたいんだけど、どうしたらよいでしょうか


具体的な例で言うと、あるソース中の int を char に全置換したい
んだけど 単純に sed "s/int/char/g" だと printf まで変わって
しまうから それは避けたい。
「単語」の条件は 英数字+アンダースコア (\w+) であること。

これ絶対FAQだと思うんだけど、 「sed 単語 置換」 で検索しても
答にたどり着かなかったのですよ。 困った。
名無しさん@お腹いっぱい。 [sage] 2007/06/04(月) 21:26:42
perl -pe 's/\bint\b/char/'
名無しさん@お腹いっぱい。 [sage] 2007/06/04(月) 21:37:31
アフォか

正解:

sed 's/\<int\>/char/g'
158 [sage] 2007/06/04(月) 22:15:45

ありがとうございました!
うまくいけました。
名無しさん@お腹いっぱい。 [sage] 2007/06/04(月) 22:20:07
\< \>で思い出したけど、HP-UXのgrepではこれ使えんのだよな。
同じregexpライブラリを使っているなら、sedでも使えんな。
159 [sage] 2007/06/04(月) 23:51:11
スレタイ読まずに書き込んで感謝されちゃったよ

こういうのを
いたたまれない気持ち
っていうのかな
名無しさん@お腹いっぱい。 [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
にならないのはどうしてですか
夜も眠れません
名無しさん@お腹いっぱい。 [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/'
名無しさん@お腹いっぱい。 [] 2007/07/03(火) 18:48:39
下記のように、置換する文字に変数って使えないんでしょうか?
設定ファイル100個飛ばしてしまったorz
forでループして、一気に変えたいんですが、$mlとそのまま置換されて
しまいます。このままだと、全部手がきです(T.T)
どなたかお助け下さい。

ml=hoge
sed 's/$ml/foo/'
名無しさん@お腹いっぱい。 [sage] 2007/07/03(火) 18:51:10

それはsedじゃなくて、シェルスクリプト側の話だね。
' ' じゃなくて " " を使う。

sed "s/$ml/foo/"
名無しさん@お腹いっぱい。 [sage] 2007/07/03(火) 19:17:43
そしてmlが"/"を含んでいて破滅する。
名無しさん@お腹いっぱい。 [sage] 2007/07/03(火) 19:30:17

できました!(T.T)
ありがとうございました。一時は徹夜を覚悟しました。
本当に助かりました。ありがとう!
名無しさん@お腹いっぱい。 [sage] 2007/07/09(月) 22:52:03

まさにそれ。
やりたいのは、特定の文字列を
現在のディレクトリ位置に置換したいということなんですが、
シェルスクリプトで
sed s/hoge/$PWD/g < file1.txt > file2.txt
と書くと、エラーになってしまいます。
($PWDが/を含んでいるから)
だれかうまいやり方わかりませんか?
名無しさん@お腹いっぱい。 [sage] 2007/07/09(月) 22:54:37
sed "s|hoge|$PWD|g" < file1.txt > file2.txt
名無しさん@お腹いっぱい。 [sage] 2007/07/09(月) 23:43:40

はやっ!ありがとー!
でもごめんなさい、実は明後日まで試せる環境がないので、
また試せたら報告に来ます。
名無しさん@お腹いっぱい。 [] 2007/07/12(木) 20:37:34
sedでラベルを1行スクリプトに組み込むのは無理ですか?
sed '/^$/!{N;};/^$/{s/\n //g;}
Nが終わったあとにスクリプトの最初に戻したいのですが美味くいきません・・・
名無しさん@お腹いっぱい。 [] 2007/07/12(木) 21:01:50
【参院選】民主党から、在日コリアンの期待背負った金氏(民団幹部)が立候補…在日参政権訴え
ttp://news22.2ch.net/test/read.cgi/newsplus/1184227903/l50
名無しさん@お腹いっぱい。 [sage] 2007/07/12(木) 21:55:25

普通にできるけど。:label; hoge; b label みたいに。
170 [sage] 2007/07/12(木) 23:18:53
報告おくれましたが、無事できました。
本当にどうもありがとう!
名無しさん@お腹いっぱい。 [sage] 2007/07/14(土) 03:55:18

-e


普通じゃない
名無しさん@お腹いっぱい。 [sage] 2007/07/14(土) 09:07:49

の質問読み直せ。-e で連結する話とは違うぞ。

が正解。たぶん、 はラベルの後のセミコロン忘れてできなかったんだろう。
名無しさん@お腹いっぱい。 [sage] 2007/07/14(土) 09:12:01
省略せずに結果を書くと、

sed ':label;/^$/!{N;};b label;/^$/{s/\n //g;}'

↑な。これで何をやりたいかは知らんが。
名無しさん@お腹いっぱい。 [sage] 2007/07/14(土) 13:40:28

ラベルの後に続けて書けるのはGNU含む一部のsedのみ。
だから普通じゃない。
普通はラベルごとに切って -e で繋ぐ。

sed -e ':label' -e '/^$/!{N;};b label' -e '/^$/{s/\n //g;}'
名無しさん@お腹いっぱい。 [] 2007/07/19(木) 11:31:07
タブ文字(0x09)だけをカンマに置換する方法はありますか?
バージョンはGNU sed の 3.02です。
名無しさん@お腹いっぱい。 [sage] 2007/07/19(木) 11:46:36
普通に sed 's/\t/,/g'
名無しさん@お腹いっぱい。 [sage] 2007/07/19(木) 12:11:34

3.02は\tを使えません
名無しさん@お腹いっぱい。 [sage] 2007/07/19(木) 12:14:25

普通にタブ文字を入れる。
名無しさん@お腹いっぱい。 [sage] 2007/07/19(木) 12:16:24
普通に sed 's/ /,/g'

タブのところは、シェル上なら Ctrl-Vに続けて入力。
シングルクォート必須。

なお、上の sed をコピペしても、TABが表示上で変換されてるので動かないと思う。
名無しさん@お腹いっぱい。 [sage] 2007/07/19(木) 13:25:58

T=`echo -ne "\t"`
sed -e "s/$T/,/g"
で出来ました。
ありがとうございました。
名無しさん@お腹いっぱい。 [sage] 2007/07/19(木) 13:31:46

そんなことしなくても、普通に でできるわけだが、、
何をわざわざ大変なことしてるだよww
名無しさん@お腹いっぱい。 [sage] 2007/07/19(木) 13:35:52
では動きませんでした。よく知りもせず、確認もせずに回答しないでください。
名無しさん@お腹いっぱい。 [sage] 2007/07/19(木) 13:41:02

あとで自分のシェルプログラムを読むときに
見えないタブコードのままだと誤解をしそうだし
Ctrl-Vという入力方式が使えない端末もあるので
あえて大層に書きました。
名無しさん@お腹いっぱい。 [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版 です。
名無しさん@お腹いっぱい。 [sage] 2007/07/20(金) 16:06:36

普通に sed 's/$/\r/'
190 [sage] 2007/07/20(金) 18:19:11
出来ました。
名無しさん@お腹いっぱい。 [] 2007/07/21(土) 00:53:54
おお、ちょうどいい!もれも似たようなことで
CR/LFを<BR>にしたかったw

dクスでつ190-191
名無しさん@お腹いっぱい。 [sega] 2007/08/08(水) 19:34:32
正規表現にマッチした文字列だけを出力したい というとき

たとえば文字列の前の方の数字だけ取り出すときは
sed -n "s/^\s*\([0-9]*\).*$/\1/p"
みたいに 正規表現にマッチした全体をマッチした部分で置換する
ようにやってたのですが、いちいち置換するのは 格好悪いので
部分\1だけ出力するような格好いい書き方ありませんか?
名無しさん@お腹いっぱい。 [sage] 2007/08/09(木) 00:53:55
perl -nle 'print $1 if /\b(\d+)/'
名無しさん@お腹いっぱい。 [sage] 2007/08/09(木) 03:14:20

GNU grep の -o オプションを使う。
ほかの grep だったらごめんなさいw
名無しさん@お腹いっぱい。 [sage] 2007/08/09(木) 13:19:08
sedスレのつもりだったんだけど、まあいいや。ありがとん。
名無しさん@お腹いっぱい。 [sage] 2007/08/16(木) 23:03:21
あるテキストファイルの1行目〜最終行の1000行前までを
取り出したいのですが、どのようにすればよいでしょうか?
(ちょうど tail -n 1000 tmp.txt で取り出せない部分を
簡単に得たいのですが)
名無しさん@お腹いっぱい。 [sage] 2007/08/16(木) 23:07:04
awk '{a[NR]=$0}NR>20{print a[NR-1000]}'
名無しさん@お腹いっぱい。 [sage] 2007/08/16(木) 23:08:31
まちがえた。
sedでやっても美しくならないから、awkで
awk '{a[NR]=$0}NR>1000{print a[NR-1000]}'
名無しさん@お腹いっぱい。 [sage] 2007/08/17(金) 08:48:47
sed -n '1h;1!H;1001,${g;P;s/[^\n]*\n//;h}'
名無しさん@お腹いっぱい。 [sage] 2007/08/17(金) 12:49:09
sedでやらなきゃいかんの?
名無しさん@お腹いっぱい。 [sage] 2007/08/17(金) 13:44:34

sedスレなので
名無しさん@お腹いっぱい。 [sage] 2007/08/17(金) 14:06:45
なんでsedスレを選んだんだろ。
名無しさん@お腹いっぱい。 [sage] 2007/08/17(金) 15:15:15
そこにsedがあるから
名無しさん@お腹いっぱい。 [sage] 2007/08/17(金) 21:24:35


レスありがとうございました。大変助かりました。
今回はawkを使おうと思いますm(__)m


すみません、sedを覚えたての初心者なもので・・・
名無しさん@お腹いっぱい。 [sage] 2007/08/21(火) 03:25:33
sed -n ':b;1001,${P;N;D};N;bb'

詰め
名無しさん@お腹いっぱい。 [] 2007/09/06(木) 11:55:22
下のような行があったとして

command, --いろいろなコメント

command, だけ残して、--いろいろなコメント(--から後ろ)を全部削除
したいのですがどうすれば良いんでしょうか?
本を読んでもよくわかりません。どうかお助け下さい。
名無しさん@お腹いっぱい。 [sage] 2007/09/06(木) 12:02:37
sed 's/--.*//'
208 [sage] 2007/09/06(木) 12:05:26
消えました!
ありがとうございました!

ほんと助かりましたです。
名無しさん@お腹いっぱい。 [] 2007/09/06(木) 13:04:52
質問ばかりで恐縮なのですが、もうひとつ質問があります。

line...$

な行があったとして、^line を見つけた時に、下のようにおしりに
HOGEな文字列を追加したい場合はどうすれば良いのでしょうか?

line... HOGE$

ほんと、勉強不足で申しわけありません。オライリー本を片手にやってる
のですが、どうしてもわかりません。
名無しさん@お腹いっぱい。 [sage] 2007/09/06(木) 13:12:43

sed '/^line/s/\$$/ HOGE$/'

address について調べれ。
名無しさん@お腹いっぱい。 [sage] 2007/09/06(木) 13:31:20
の $ は文字じゃなくて、正規表現の $ の意味ではないのかと
名無しさん@お腹いっぱい。 [sage] 2007/09/06(木) 14:15:56


ありがとうございました。

sed '/^line/s/$/ HOGE/'

でうまくいきました。addressについても勉強してみます!
名無しさん@お腹いっぱい。 [] 2007/10/07(日) 16:15:05
仮ファイルを使わずに
入力ファイル自身を書き換えることは出来ますか?
名無しさん@お腹いっぱい。 [sage] 2007/10/07(日) 16:58:58
-i
名無しさん@お腹いっぱい。 [sega] 2007/10/11(木) 01:21:12
//exec($command,$arg);
とコメントアウトされた行をアンコメントしたいんだけど
sed 's/\/\/(exec\(\$command,\$arg\);)/\\1/' -i hoge.php
とかやっても思ったとおりに置換されない

(とか$とか/とかをうまくエスケープできてないだけなのか
どうなのかがよくわかんないんだけど、どこが間違ってる?
名無しさん@お腹いっぱい。 [sage] 2007/10/11(木) 01:30:55
sed -e 's@//\(exec(\$command,\$arg);\)@\1@'
名無しさん@お腹いっぱい。 [] 2007/11/11(日) 11:05:40
教えて下さい。

12345kkk6789
23456kkk4321
32456kkk9876
のようなテキストファイルが複数あり、
各行のkkk以降(kkkも含めて)を削除したいです。
1日考えてダメだったので、だれかお助け願います。


名無しさん@お腹いっぱい。 [sage] 2007/11/11(日) 11:11:26
sed -e 's/kkk.*//'
名無しさん@お腹いっぱい。 [] 2007/11/11(日) 13:48:54
ありがとうございます。
名無しさん@お腹いっぱい。 [] 2007/12/19(水) 03:19:13
sed -e '500,$d' の500の部分を変数にすることって出来ますか?

例えば、sed -e '$no,$d' みたいな感じで実行するとエラーになって困ってます。
名無しさん@お腹いっぱい。 [sage] 2007/12/19(水) 03:39:03

シングルクォートをダブルクォートに変えてみな。
222 [sage] 2007/12/19(水) 03:55:03

どうもです。
sed -e "$no,$d"という風に変更してみましたがダメでした…

そもそも変数を指定することが出来ないというオチなのでしょうか?
名無しさん@お腹いっぱい。 [sage] 2007/12/19(水) 04:23:23

あ、 をちゃんと見てなかった。
$d は変数じゃなくて行末とデリートか。
なら、後ろの $ はエスケープが要るな。

sed -e "$no,\$d"

> そもそも変数を指定することが出来ないというオチなのでしょうか?
sed 自身が変数を解釈しているわけではない。
この場合は sed に引数を渡すシェルが処理をしている。

bash を例にとって説明すると の形式では
シングルクォートの中身は展開されずに
そのままの文字列が sed に渡される。

ダブルクォートにすると中身を展開するので
$no と $d を変数と解釈して設定された値に
入れ替わったものが sed に渡される。

この辺の挙動をちゃんと知りたいのならおまいさんが
使っているシェルの man を読め。
222 [sage] 2007/12/19(水) 04:41:38

エスケープしたら一発で成功しました!

225さんの説明を読んで、また一つ理解が深まりました。
どうもありがとうございました!
名無しさん@お腹いっぱい。 [sage] 2007/12/19(水) 07:23:30

名無しさん@お腹いっぱい。 [sage] 2007/12/19(水) 13:56:00
sedの置換について質問 (GNU sed 4.x)
タブ(\t)は置換できるのですが改行(\n)が置換できません。
例えば # cat a.txt
aaa
bbb
aaa(タブ)bbb

3行目の(タブ)区切りは置換できるけど1行目と2行目にマッチした文字を置換できません。
どうやったらできますか?
名無しさん@お腹いっぱい。 [sage] 2007/12/19(水) 14:48:42
何をどう置換したいのだ?
sed のスクリプトのほうも示してほしいのだが
228 [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
これで出来ると思ったのですが出来なかったので。
どうやったらできますか?
名無しさん@お腹いっぱい。 [sage] 2007/12/19(水) 19:02:25
-e 's/^aaa$/eee/' -e 's/^bbb$/fff/'
名無しさん@お腹いっぱい。 [sage] 2007/12/19(水) 19:25:27

アフォかw
228 [sage] 2007/12/19(水) 19:47:13
訂正

a.txtの内容
----------
aaa
bbb
ccc
bbb
----------

このa.txtを
----------
aaa
bbb
ccc
ddd
----------
↑のように置換したい。
この文字は何行目にあるか不明だとして
一番下のbbbをdddに置換することはできますか?
名無しさん@お腹いっぱい。 [sage] 2007/12/19(水) 20:03:31

sedじゃなきゃいかんの?
名無しさん@お腹いっぱい。 [sage] 2007/12/19(水) 20:06:41

ほれ、解答だ

sed -n '${p;q};:s; N;s/ccc\nbbb/ccc\nddd/;P;D;b s'
228 [sage] 2007/12/19(水) 20:21:37

sedじゃなくてもいいですけど、置換できますか?


エラーがでました。
extra characters at the end of q command
名無しさん@お腹いっぱい。 [sage] 2007/12/19(水) 21:07:06

俺のところではエラーにならないけどな。
わかりやすいように改行を入れるとこんな感じ


sed -n '
${
p
q
}
:s
N
s/ccc\nbbb/ccc\nddd/
P
D
b s'
名無しさん@お腹いっぱい。 [sage] 2007/12/19(水) 21:24:57

sed じゃなくてもいいならこっちで。
シェルスクリプト総合 その9
ttp://pc11.2ch.net/test/read.cgi/unix/1187130302/
228 [sage] 2007/12/19(水) 21:26:39
1行で出来ませんか?
228 [sage] 2007/12/19(水) 21:30:49

わかりました。ありがとう。
名無しさん@お腹いっぱい。 [sage] 2007/12/19(水) 22:06:56
sed -n '${p;q;};:s;N;s/ccc\nbbb/ccc\nddd/;P;D;b s'
名無しさん@お腹いっぱい。 [sage] 2007/12/19(水) 22:24:14

できました。ありがとう。
名無しさん@お腹いっぱい。 [sage] 2008/01/05(土) 05:42:11
sed -n "m(_ _)m|-_-|(っ゚ロ゚)っ"
名無しさん@お腹いっぱい。 [sage] 2008/01/05(土) 17:14:31
sed: 1: "m(_ _)m|-_-|(っ゚ロ゚)っ": invalid command code m
名無しさん@お腹いっぱい。 [sage] 2008/01/30(水) 03:09:39
( を に痴漢したいんだけど
$ cat hoge | sed -e "s/\\\(/ /"
ってやってもなんか駄目っぽい
なんで?
名無しさん@お腹いっぱい。 [sage] 2008/01/30(水) 05:08:34

シングルクォートならどうよ?

$ sed -e 's/(/ /' hoge
名無しさん@お腹いっぱい。 [sage] 2008/01/30(水) 10:17:02
sedはバックスラッシュいらない。
グループ化したいときはいるけど。
名無しさん@お腹いっぱい。 [sage] 2008/01/30(水) 23:45:42

シングルクォートならできるんだけど、なんかこう
どうしてもダブルクォートでやりたいお年頃なんです
名無しさん@お腹いっぱい。 [sage] 2008/01/31(木) 01:10:52
大人になりましょう
名無しさん@お腹いっぱい。 [sage] 2008/01/31(木) 15:44:59
ある単語(例:foo)をhoge-"
と置換したいんですが、

sed -e "s/foo/hoge-"/g"

だと当たり前だけどエラーが出ます・・・。
ダブルクォートとかって、どうやって指定したらいいんでしょう?
名無しさん@お腹いっぱい。 [sage] 2008/01/31(木) 15:54:58
sed -e "s/foo/hoge-\"/g"
名無しさん@お腹いっぱい。 [sage] 2008/01/31(木) 16:18:41

おお!ありがとう!!できましたヾ(゚∀゚)ノ
しかし>を認識しなくなってリダイレクトが使えなくなった・・・。
Winに組み込んだSedだからなのかなぁ・・・。
名無しさん@お腹いっぱい。 [sage] 2008/02/02(土) 11:55:41
winのコマンドラインパーサーは腐っているから-fで渡したほうが精神的によろしい。
◆b/iUrOax9k [sage] 2008/04/13(日) 23:43:03
お邪魔します^^
あのスレのさんありがとうございます
私の目標と現状を書いておいたほうが良いのかな

★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全くわかっていないです^^;
単語の意味がわからない事だらけで意味を調べて廻る事でせいいっぱいで
なかなか前進しないままです
とり急ぐわけではないのですが
もしよろしければお時間の都合の良いときだけで結構ですので教えて頂けましたら幸いです
どうぞよろしくお願い致します
名無しさん@お腹いっぱい。 [sage] 2008/04/14(月) 01:07:47
>>ALL
Win版のsedの話なんだけど、sedスレがUNIX板とLinux板に
しか無いので誘導させてもらったけどいいっすか?


PerlやJavaScript(JScript)がわかるなら、そっちでやったほうがいいね。

マッチングさせたい物が1〜3行に渡るって所でモレにはわからん。
できるかもしれないが複雑になるような希ガス
◆b/iUrOax9k [sage] 2008/04/14(月) 01:17:30
144さん
ありがとうです
お声かけて頂いただけで嬉しかったです
まだ解説本を購入して10日程です
全部読んでいないのでどこまでできるかわかりませんが
自力でもう少し頑張ってみます
本当にありがとうございました^^
お疲れのところすいませんでした
名無しさん@お腹いっぱい。 [sage] 2008/04/14(月) 23:09:24
よく流れがわからんが
やりたいこと全部を一気に教えてもらうとかせずに
知りたいポイントをしぼって一つずつ質問すれば答えてくれると思うよ。
名無しさん@お腹いっぱい。 [sage] 2008/04/15(火) 03:56:38
各板で暗黙のルールみたいなのがあるんだろうか
やりたいことは先に書いた通りなんだけど
プログラム板というところで初めはHTMLの読み込み方を聞いてみたんですよ
そしたら「何がやりたいのかよくわからん。もっと詳しく。」ばかりレスが付くんです
それで私が「ファイルの読み込みです」と返事をすると「具体的にここに書かないとわからない」
これを繰り返しているうちに「後出し条件だ」とか「それはプロにしか出来ないレベル」とか
結局何も返答しないのに威張ってばっかり。
まるで解答者(のフリをして答えない)人の相手をするばかりで全く進まない
解答者らしき人を問い詰めていったら
私のような人間を探してネタをパクッタリいい人を装いながら客として誘導したり
最初から教える気は全く無いって事でした。無駄な時間ばかり過ぎていくので
板を変えてプログラマー板ってとこへも行ってみたのですが
そこでも「もっと具体的に」「わからん全部書け」「質問以前に問題あり」
散々小ばかにされては解答は無し。
やはり同じような輩が蔓延っていました
2chで教えて貰おうとするのが間違っているのかもしれません
自分は今までパソコンソフトには全く興味が無かったので
こういう汚い連中が露骨に威張り倒してるところがあるとは知りませんでした
他の板でもひどい言葉はよく見かけますが
大体はまともな意見が多いので誰かがフォローしてくれたりしますが
パソコン関係は解答者が圧倒的に優位なようだ
「只で教えてるんだぞゴルァ」とかも言われました(一度も解答しない人にw)
只で教えたくないならスルーでいいのではと言い返したら
質問者としてなって無いとか言い出す始末
そういうことでまとめて書いておいたんです
解答者の振りをする連中は答えないのに質問者をいじって遊んでるんです
でわ
名無しさん@お腹いっぱい。 [sage] 2008/04/15(火) 06:30:34

そのとおりです。
回答が欲しい場合はエスパースレへ

【エスパー】くだ質【エラーメッセージ不要】(1)
ttp://pc11.2ch.net/test/read.cgi/unix/1207042632/
名無しさん@お腹いっぱい。 [sage] 2008/04/15(火) 06:40:21
うわぁ…これはひどい。

書き込む前に自分のレスを読み返してないのか?
全然まとまって無いし、誤字脱字だらけ。

スクリプト書く前にやりたい事を
簡潔な日本語で書く練習をした方が良い。
いや、マジで。
255 [sage] 2008/04/15(火) 07:51:22

暗黙のルールという訳じゃないけどできるだけ楽して、人から聞きだそうという態度の人は煽られるね。
あなたにそういうつもりは無くても例えば、せっかくこのスレまで誘導したのに、

>sed全くわかっていないです^^;
>もしよろしければお時間の都合の良いときだけで結構ですので教えて頂けましたら幸いです

これだけ見ると、1から10まで教えろって言ってるように見えるよ。

色々なスレを見ればわかるが、質問をして、あなたのように煽られる人と、
煽られない人がいるが、その違いがわからないのであれば、
「2chで教えて貰おうとするのが間違っているのかもしれません」という事。
名無しさん@お腹いっぱい。 [sage] 2008/04/15(火) 11:53:57
>254が辿ってきたのは俺の知る限りこの辺かな。
ttp://pc11.2ch.net/test/read.cgi/hp/1205922529/35
ttp://pc11.2ch.net/test/read.cgi/php/1203935151/275
ttp://pc11.2ch.net/test/read.cgi/tech/1186030400/664
ttp://pc11.2ch.net/test/read.cgi/tech/1172242542/126
ttp://pc11.2ch.net/test/read.cgi/software/1205309656/109

童謡のいぬのおまわりさんみたいな状況だな。
名無しさん@お腹いっぱい。 [sage] 2008/04/15(火) 14:20:36
みんなレスありがと
答えてくれたことにお礼を言うのは当たり前だと思うんだけど
今までのスレは答える前から上から目線で結局答えてくれない
この人たちは解答を知らないのでは?と思うようになったんですよ
昨日も私が質問しているように見えるので他の質問に答えれないだろ
あの質問もお前だろって言うので
「それ自分じゃないよその質問には答えてあげればいいよ」とかやりあってたら
その質問者が現れた
当然のように解答者にはペコペコ謝ってる(これからも解答してもらうために)
この先、解答は期待できない私には一言もなし
初心者用の解説本をヨンから来いと言われるんだけどファイル操作は初心者用ではわからないようだ
手持ちのperlは3冊ある(超初心者用、初心者用、命令逆引き辞書)
perl解説本ではファイル操作の解説に至るまでにCGIの解説ばかりだ
やっとファイル操作の解説まで読み進めたら5ページほどで終わってるorz
perlでファイル操作は中級レベルの解説本を買わなければいけないのかと思うようになった
他の言語を調べてみた
CとかjavaとかAjax
初めのほうからファイル操作は解説している
ただ解説に使っている言葉自体が命令を使って解説しているので自分には全く理解不能だorz

それ以外にも軽く10スレ以上は廻ったよ
それで何か言語を覚えなきゃダメだなってわかったんだ
名無しさん@お腹いっぱい。 [sage] 2008/04/15(火) 14:28:27
結局、私の言いたかったのは答えれないのに答える振りしてまで
優位に立ちながら出てこなくてもいいのではないのかってこと
どうせ答えないのにいかにも「解答欲しけりゃぺこぺこするのは当たり前だろカス氏ね」的な態度とって
それで解答しなくても解答者を装ったほうがいいってことなのだろか
何もわからないことまでしゃしゃりでてこなくてもってことです
偽解答者なら私でも今からすぐにできそうだw
名無しさん@お腹いっぱい。 [sage] 2008/04/15(火) 14:34:59
ちなみに某スレでdieがわかんないような逆引き辞書だよ
って記載した後に解説本に載ってたサンプルが動かなかったので
なぜエラーになるのかわからないって書いたら
難しいことには答えない
でも何か答えなければって強迫観念でも沸き起こるのか
解答者を装いながら勉強するのも手段なんだろうけど
なにがなんでもしゃしゃり出てくるのは過疎っているからだろね
悪循環板だ
名無しさん@お腹いっぱい。 [sage] 2008/04/15(火) 18:54:33
の意味がわからないようだね。

>何もわからないことまでしゃしゃりでてこなくてもってことです

あんたが自由に質問をしていいように、他の人間もそれに対して自由にレスを付ける事ができる。
「わからないなら、しゃしゃり出てくるな」というのは単なるあんたの都合でしょ?
そうでなければ、そいつらを自分より低レベルだと見下したいのか。

そういう事をされて、このスレでクダを撒き、関係の無い人に八つ当たりをしているあんたは、
そいつらと同類という事に何故気付かない?

もう一つ。「自分」と「2ちゃんねる」のやり取りだと思っているようだけど、
レスをしているのは「個々の人間」だ。
名無しさん@お腹いっぱい。 [sage] 2008/04/15(火) 18:56:42
あれだろ、渋谷までいきたいんですが教えてください。
って質問して
電車で、とかタクシーで、とか徒歩で、とか教えてくれてるのに
切符の買いかたがわかりません、とか
タクシーって何ですか?とか
徒歩って何って読むんですか?とか
馬鹿な質問してるから飽きれられてるんだろ。
名無しさん@お腹いっぱい。 [sage] 2008/04/15(火) 19:02:52
人生相談ならよそでやってくんないかな。
sedと関係ない。
名無しさん@お腹いっぱい。 [sage] 2008/04/15(火) 19:43:39

ttp://www.wdic.org/w/WDIC/%E5%8D%8A%E5%B9%B4ROM%E3%81%A3%E3%81%A6%E3%82%8D

>今までのスレは答える前から上から目線で結局答えてくれない

まともに回答してくれた人間に随分失礼な言い草だな。
名無しさん@お腹いっぱい。 [sage] 2008/04/15(火) 21:42:30

>それで何か言語を覚えなきゃダメだなってわかったんだ

わかったけど勉強する気が無いわけ?
次から次へと言われるがままにPerl、JavaScript、サクラエディタ、awk、sedと
目先で楽できそうな物を追っかけてるから目的が達せられないんだ。

>初心者用の解説本をヨンから来いと言われるんだけどファイル操作は初心者用ではわからないようだ

参考書として勧められてない「独習Perl」が手元にあるが丁度半分まで読んだ所で扱われているが。

努力をしないで結果を得たいなら、それなりの報酬を出して人を募集するか、
質問専用掲示板で、具体的にサンプルを出し、これこれこーゆースクリプトを
書いて下さい、と依頼するかのどちらか。
ttp://okwave.jp/
名無しさん@お腹いっぱい。 [sage] 2008/04/15(火) 21:47:06
sedは数年でなくなる
名無しさん@お腹いっぱい。 [sage] 2008/04/15(火) 23:16:01
何いきまいてんの?
パソコンソフトって結局ゲームソフトみたいなもんでしょ
その操作を知ってるからって威張るもんじゃないよね
自分で作ったソフトじゃないんだから
ゲームソフトの使い方だったら攻略本としてでるんだろうけどね
ソフトの使い方を先に知ったからって偉いと思ってんならスルーすればいいじゃん
メモ帳やペイントみたいなもんで使い方覚えたらどってことないと思う
いざやり始めた人間をいじくって遊ぶなんて恥ずかしいね
名無しさん@お腹いっぱい。 [sage] 2008/04/15(火) 23:19:39
やぁやぁ我こそはsedの達人なり〜〜
そやって表歩いてみ
誰か「キミ凄いんだ」と声でも掛けてくれたらいいねw
我こそはプログラマーなり〜〜〜〜腹いてー
名無しさん@お腹いっぱい。 [sage] 2008/04/15(火) 23:39:00
高校、大学と印刷関係の工場でバイトしてたんだ
当時職人と呼ばれる連中はタバコくわえながら
あごで指図しては怒鳴りあげたりやりたい放題
その頃何も知らなかったので「○○さん技術あるから仕方ないよね」みたいな空気があった
ん?
ちょっと待て!
機械の操作だけじゃん
今や家庭用のプリンターでも当時の技術を遥かに超えている
車にの運転とかもそうだよね
昔は女性が免許持って運転してると目立つしなんかあったら「女の運転わ・・」とか言われたもんだ
今の乗用車の性能で言えば当時のレーサーを余裕でぶっちぎれますw
そんな感じで機械やソフトを開発してるのは偉いと思うけど
操作で自慢されても5年後にはもっと簡単で3日でものになるソフトが出てるかもしれないよ
名無しさん@お腹いっぱい。 [sage] 2008/04/15(火) 23:49:36
以後放置で。
名無しさん@お腹いっぱい。 [sage] 2008/04/16(水) 03:11:06
あらら、自分の非を指摘されて、それが正しいもんだから逆切れしちゃった訳ね。
まともに反論できないからって、お前の母ちゃんでべそーは無いよな(笑)
名無しさん@お腹いっぱい。 [sage] 2008/04/16(水) 04:20:47
自分で作ったソフトでも無いのにw
使い方知ってるくらいでそこまで威張るか普通?
そんなことぐらいで天狗になる奴リアルではいないよw
ゲームの上手い子供が威張り倒してるのとどう違うんだ???
パソコンソフトの使い方ぐらいでこんなに意地になる連中マジで知らんわw
教えたくなければ知らん顔してればいいのに何が何でも答えるんだね(解答以外はwwwww)
多分、実社会でもずれてんだろなー
キミはた迷惑だと思われてるかもしれないよw
廻りよく見てみw
名無しさん@お腹いっぱい。 [sage] 2008/04/16(水) 04:32:41
何このスレ?
名無しさん@お腹いっぱい。 [sage] 2008/04/16(水) 04:58:56
「教えて君」の見本のような奴だな。
名無しさん@お腹いっぱい。 [sage] 2008/04/16(水) 05:24:34
おもちゃを上手く使いこなせたから自慢してるって程度じゃないな
頭小学生並みの幼児性w
上から目線が笑えるw
こいつ 奴 プ
笑えるwww
言葉遊びできない奴は何やってもダメって典型
名無しさん@お腹いっぱい。 [age] 2008/04/16(水) 05:39:44
これほどの逸材を埋もれさせておくのはもったいないから age とく
名無しさん@お腹いっぱい。 [sage] 2008/04/16(水) 05:48:41
# がいいと思うんですが。


そういうことでしたらに追加で、逸材ぶりがよく伝わるスレも。
ttp://pc11.2ch.net/test/read.cgi/php/1204488452/42-
名無しさん@お腹いっぱい。 [sega] 2008/04/16(水) 17:32:10
これは壮大な釣りなのか?
一瞬、なりすましを疑ったが、,282を見ると、まさに本人だよな。
名無しさん@お腹いっぱい。 [sage] 2008/05/15(木) 23:42:43
sedって文全体からある語句を置換するのは簡単だけど、
最初にマッチする語句だけ置換して後はそのまま出力しようとするとちょっと複雑になってしまうよね。
スクリプトの先頭に戻らない様なループを作らないといけない。
名無しさん@お腹いっぱい。 [sage] 2008/05/16(金) 00:20:54

遠まわしに「最初にマッチする語句だけ置換をする簡易な方法はありませんか?」
って聞いてるのか?それとも独り言ならチラ裏へ。
名無しさん@お腹いっぱい。 [sage] 2008/05/16(金) 11:39:13
% ( echo hogehoge; echo hogehoge ) | sed '0,/hoge/s/hoge/fuga/'
fugahoge
hogehoge

GNU sed に限るようだが。
284 [sage] 2008/05/16(金) 21:22:18

レスサンクスです。ただ最初の0を1でやった場合はうまくいきませんでした。

s/hoge/fuga/
:loop
p
N
s/.*\n//
b loop
漏れの頭ではこんなのしか思い付きませんでした。
もっとスマートな方法があったら教えてください。
名無しさん@お腹いっぱい。 [sage] 2008/05/16(金) 21:36:55


/hoge/{
s/hoge/fuga/
:loop
n
b loop
}
名無しさん@お腹いっぱい。 [sage] 2008/06/04(水) 19:06:03
/me ?
名無しさん@お腹いっぱい。 [] 2008/07/07(月) 08:34:28
n文字目のxのみyに置換というのはどうすればいいですか
名無しさん@お腹いっぱい。 [sage] 2008/07/07(月) 08:36:46
n文字目のxとは、
行頭から(n-1)個の文字のあとに出現するx のことか?
行頭からn回目に出現するx のことか?

名無しさん@お腹いっぱい。 [sage] 2008/07/07(月) 09:42:38

参考までに両方ともお願い
名無しさん@お腹いっぱい。 [] 2008/07/07(月) 12:09:14
前者です
名無しさん@お腹いっぱい。 [sage] 2008/07/07(月) 13:30:25

後者ですが、念のため両者の場合について教えてください
名無しさん@お腹いっぱい。 [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を変数にするのは漏れには粍
名無しさん@お腹いっぱい。 [sage] 2008/07/07(月) 23:32:28
()ってのは条件になるん?
290 293 [] 2008/07/08(火) 10:30:38
ありがとうございます
確かに.×4みたいに表現できたらかっこいいですが
これで文句なしです!
名無しさん@お腹いっぱい。 [sage] 2008/07/08(火) 11:11:36

×4は無理っぽい。
echo x-x-x-x-x- | sed 's/\(\([^x]*x\)\{3\}[^x]*\)x/\1y/'
名無しさん@お腹いっぱい。 [sage] 2008/07/08(火) 11:49:57

Solarisのsedじゃ動かんな。
名無しさん@お腹いっぱい。 [sage] 2008/08/29(金) 17:04:29
01101,"0600031","ホッカイドウ","サッポロシチュウオウク","キタ1ジョウヒガシ","北海道","札幌市中央区","北一条東",0

01101,"0600031","ホッカイドウ","サッポロシチュウオウク","キタ1ジョウヒガシ","北海道","札幌市中央区","北一条東",0

この第5フィールドの半角英数だけ(2個有る場合もあり)全角にしたいのですが
どのようにsedを作ればいいでしょうか?
名無しさん@お腹いっぱい。 [sage] 2008/08/29(金) 17:07:35
>どのようにsedを作れば
釣りポイントはここですか?
名無しさん@お腹いっぱい。 [sage] 2008/08/29(金) 21:15:26
その形式は、郵便屋の郵便番号データだろ。
エクセルか何かの一覧表をcsvに落としただけの代物だから
そのままでは役に立たないよ。
 そのままDBに格納し、専用プログラムで変換かけて正規化してる。
名無しさん@お腹いっぱい。 [sage] 2008/10/08(水) 23:13:50
aaa.hoge
bbb.hage
ccc.foge

とかいう文字列があって、*.hoge以外にマッチする正規表現って出来るのでしょうか?
名無しさん@お腹いっぱい。 [sage] 2008/10/09(木) 00:18:38
スレ違い。正規表現スレに池
名無しさん@お腹いっぱい。 [sage] 2008/10/09(木) 21:57:14


その文を素直に読むと、当該文字列にだけはマッチしない
正規表現と読めるが、書き込み子の心情を忖度すると、
sed 's/[a-c]{3}\.hoge/==matched==/' って事かな?
まあ、[a-c]* でも、(aaa|bbb|ccc) でも、[[:alpha:]]* でも、
マッチする表現は無数に有るけど、(・・に、だけマッチする)
を、求めているなら、そもそも*.hoge って見当外れだし、
要するに、何が知りたいのか良く分からん。
名無しさん@お腹いっぱい。 [sage] 2008/10/10(金) 17:29:18

>

なるほど、ありがとうございます。
名無しさん@お腹いっぱい。 [] 2008/10/27(月) 23:08:07
ファイル内の、スペース+改行をスペースのみに置換したいのですが、
どのように記述すればよいのでしょうか。

データ数が数十万行あるため、ファイルを全部読み込んでから
置換する方法では、容量がオーバーしてしまいました。
名無しさん@お腹いっぱい。 [sage] 2008/10/27(月) 23:26:18

Perl か何かで書いちゃった方が早いんじゃね?
名無しさん@お腹いっぱい。 [] 2008/10/27(月) 23:29:29

環境上、Perlを使用することができないんです。
sedでは難しいでしょうか。
名無しさん@お腹いっぱい。 [sage] 2008/10/28(火) 00:02:57
環境によって違うと思うけど普通の書き方じゃダメなのか?

s/ \n/ /g
名無しさん@お腹いっぱい。 [] 2008/10/28(火) 00:07:58

自分の環境では、\nが認識されませんでした。
名無しさん@お腹いっぱい。 [sage] 2008/10/28(火) 02:53:50

OSの具体的な名前とかは出さないのな。

s/\
/ /g

では?
312 [sage] 2008/10/28(火) 02:56:53
すまん。勘違いした。

sed はPerlと違って、入力したときに改行を取り除いてからパターンスペースに送るから、
そこで改行探しても見つかりっこない。
んで、出力時に自動的に改行は付くし、これを抑制する手段はない。

せめて awk使っとけ。Perlなくてもawkはあるだろ。
312 [sage] 2008/10/28(火) 02:58:41
すまん勘違いしてた。

sedはPerlと違って入力時に改行を取り除くから、置換時に改行探したって見つかりっこない。
Nとかで次の入力を読んでくれば間に挟まるけど。

名無しさん@お腹いっぱい。 [sage] 2008/10/28(火) 03:19:55
おまえらマルチに親切だな
名無しさん@お腹いっぱい。 [] 2008/10/28(火) 07:09:08
ありがとうございました。
sedでは難しそうですね。別の方法を探してみます。
名無しさん@お腹いっぱい。 [sage] 2008/10/28(火) 07:21:00
微妙に変えてあるとこがうまいな。
名無しさん@お腹いっぱい。 [sage] 2008/10/28(火) 22:44:37
tr -d '\n'
名無しさん@お腹いっぱい。 [sage] 2008/10/28(火) 22:47:24
良く読んで赤面しろw



「スペース+改行をスペースのみに置換したい」
名無しさん@お腹いっぱい。 [sage] 2008/10/28(火) 22:54:10


sed '
:again
/ $/{
N
s/?n//
b again
}
'
名無しさん@お腹いっぱい。 [sage] 2009/02/16(月) 16:23:57
sedの公式ホームページってないのでしょうか
awkは一応gawkがあって一応開発も続いているようですが
sedはどのような状態なのでしょうか?
いつまでたっても最短マッチを搭載しない理由もお教えねがいます。
名無しさん@お腹いっぱい。 [sage] 2009/02/16(月) 23:57:10
そういう機能を追加すると、既存のスクリプトが動作しなくなるから。
ポータビリティを失ってまで実装する必要がない。(それこそ、perlでもawkでも使えばいい)
名無しさん@お腹いっぱい。 [sage] 2009/02/17(火) 09:03:12
なるほど、参考になりました。
もし開発に参加できるなら参加したいと思っていたのですが
そのような理由ならそういったときはperlやawkに頼る事にします。
名無しさん@お腹いっぱい。 [sage] 2009/02/18(水) 09:33:00

sedに正規表現perl互換モードを搭載すればいいだけなのにね
名無しさん@お腹いっぱい。 [sage] 2009/02/19(木) 18:21:24
GNU sedの-r みたいなので、perlモードがあればいいね。
名無しさん@お腹いっぱい。 [sage] 2009/02/19(木) 19:39:12

gnu sed 拡張している人たちがいるからそのあたりに乗ってみれば?
名無しさん@お腹いっぱい。 [sage] 2009/02/19(木) 20:18:08
onigsedじゃダメなのか?

つーか、perl -pe でいいじゃん。
名無しさん@お腹いっぱい。 [sage] 2009/02/24(火) 17:21:46

GNU sed なら
ttp://www.gnu.org/software/sed/
名無しさん@お腹いっぱい。 [sage] 2009/02/27(金) 16:21:29

今度はsed互換ではないという
名無しさん@お腹いっぱい。 [] 2009/06/29(月) 20:49:52
質問させてください。
sedでホワイトスペースを解除または増やす方法ってあるのでしょうか?
名無しさん@お腹いっぱい。 [] 2009/06/29(月) 20:52:21
間違い。ホールドスペースです。
名無しさん@お腹いっぱい。 [sage] 2009/06/29(月) 21:16:24
以下ホワイトベース禁止
名無しさん@お腹いっぱい。 [sage] 2009/06/29(月) 22:40:10
白兵戦になるぞ!
名無しさん@お腹いっぱい。 [] 2009/07/03(金) 03:11:56
sedで、
/pattern/r file
ってするとマッチした行の次にfileの内容が出力されますが、
その行の前に出力する方法はないでしょうか?
ちなみにマッチする行は1個しかありません。
名無しさん@お腹いっぱい。 [sage] 2009/07/03(金) 23:31:09
sed -n -e '/pattern/r file' -e p
名無しさん@お腹いっぱい。 [sage] 2009/07/03(金) 23:49:16
ごめん、ダメだった。こっちで。
sed -n -e 'x;p;g' -e '/pattern/r file'

1行目の空行は無視して
名無しさん@お腹いっぱい。 [sage] 2009/07/03(金) 23:53:59
1行めの空白はもう1段 | sed 1d で消せるけど……
入力の最後の1行出てなくない?
336 [sage] 2009/07/04(土) 00:17:53
出てなかった。

sed -n -e 'x;p;g' -e '/pattern/r file' -e '$p'

という感じで最後の行を出力することは出来るけど
patternが最後の行の場合だけ、fileの内容が次行に出ちゃう。
自分はギブアップ
名無しさん@お腹いっぱい。 [sage] 2009/07/04(土) 12:34:06
いろいろありがとうございます。
sed 1個では難しいようですね。
patternより前とpattern以後に別けて、
間にfileをcatするしかないのかもしれません。
名無しさん@お腹いっぱい。 [sage] 2009/07/04(土) 18:04:47
sed 2個ならなんとか
sed -e '$aEND' | sed -e '
$d
/pattern/{
r file
N
}
${
P
d
}'
名無しさん@お腹いっぱい。 [sage] 2009/09/24(木) 17:28:09
の例に似てますが、
バイナリファイル(1行めの)4バイトめを ASCII 文字 0x02 -> 0x03 に
変更するにはどうすればいいでしょう?

# sed -e '1s/^\(...\)\x02/\1\x03/' in > out

ではだめでした。
試した環境は FreeBSD 7.2 です。
名無しさん@お腹いっぱい。 [sage] 2009/09/24(木) 18:02:08

(dd bs=3 count=1; dd bs=1 count=1 of=/dev/null; printf '¥003'; cat) < in > out
名無しさん@お腹いっぱい。 [sage] 2009/09/25(金) 10:26:24

sed -e "1s/^\(...\)^B/\1$(printf '\03')/"
でできんかね。^BはC-v C-b入力できるはず。
名無しさん@お腹いっぱい。 [sage] 2009/09/25(金) 10:46:05

最初の3バイトに改行文字がない保証がないから一般的にはだめそうだな。
やっぱ行指向のsedでバイナリファイルを操作するのは無理があると思う。
341 [sage] 2009/09/25(金) 12:31:36
\x02 などは GNU sed の拡張仕様でした。

 # pkg_add -r gsed
 # rehash
 # gsed -e '1s/^\(...\)\x02/\1\x03/' in > out

でできました。
名無しさん@お腹いっぱい。 [sage] 2009/09/25(金) 12:37:49
ありがとうございます。
の dd を使った方法は大変参考になります。

あと、
 # sed -e '1s/^\(...\)^V^B/\1^V^C/' in > out
でもできました。
^V^B は <Ctrl>V<Ctrl>B 、
^V^C は <Ctrl>V<Ctrl>C です。
名無しさん@お腹いっぱい。 [sage] 2010/02/20(土) 21:42:41
ひとつ、お聞きいたします。

Nコマンドって、最後の行で次行が読めない場合、何もせず終了、
のはずですよね。すると、
sed 'sed ':l;N;bl' <file>
とすると何も出力されないんじゃないかと思うんですが、
私の使っているGNU sed 4.1.5版だと<file>の全部を出力してしまいます。
つまり、「何もせず終了」じゃなくて、「デフォルト出力して終了」
になっているように思われるわけですが、これは、どうなんでしょうか。
名無しさん@お腹いっぱい。 [sage] 2010/02/20(土) 23:16:51

infoに書いてありました。
名無しさん@お腹いっぱい。 [] 2010/07/01(木) 23:39:24
なるほど
名無しさん@お腹いっぱい。 [sage] 2010/08/17(火) 13:08:10
yコマンドで"/"を対象に入れたいんですが出来ないんでしょうか
初歩的ですいません
名無しさん@お腹いっぱい。 [sage] 2010/08/17(火) 13:23:28

sed y,abc,ABC,

とかできるから、

sed 'y,ab/,ab%,'

もできる。
350 [sage] 2010/08/17(火) 23:26:44
そうか、区切り文字変えられるのsコマンドばかりじゃないんですね。
どうもありがとうございました。
初心者 [] 2010/10/23(土) 20:01:51
sedでシェルすくりぷとの行つなぎバックスラッシューを消して、繋ぐことできますか?
perlなら-pe "s/\\\n//g"でできます。
edでも、awkでもできれば、教えていただけませんか?
名無しさん@お腹いっぱい。 [] 2010/10/24(日) 13:40:00
できる
初心者 [sage] 2010/10/24(日) 21:13:33
できました ありがとう
初心者 [] 2010/10/25(月) 22:07:05
できないようですね、残念です。
名無しさん@お腹いっぱい。 [sage] 2010/10/26(火) 19:38:19
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'
名無しさん@お腹いっぱい。 [sage] 2010/10/28(木) 08:37:34
踊っているように見えて仕方がない
echo "000000$NUM" | sed -e 's/.*\(..\)\(..\)\(..\)/\1\2\3/'
名無しさん@お腹いっぱい。 [sage] 2010/11/28(日) 18:33:17
sedでファイルのある部分までをファイル1、それ以降をファイル2に出力ってスマートにできませんか?
例えば100行のsample.txtというファイルで、

sed -e "50q" < sample.txt > sample1.txt
sed -e "1,50d" < sample.txt > sample2.txt

の様にするのは無駄におもえてしまいます。
名無しさん@お腹いっぱい。 [] 2010/11/28(日) 18:39:52
sed -ne '1,50w sample1.txt' -e '51,$w sample2.txt' < sample.txt
とか?
名無しさん@お腹いっぱい。 [sage] 2010/11/28(日) 18:48:58
split -50 sample.txt; mv xaa sample1.txt; mv xab sample2.txt
名無しさん@お腹いっぱい。 [sage] 2010/11/28(日) 19:52:27
,361
ありがとうございました。勉強になります。
名無しさん@お腹いっぱい。 [] 2010/12/22(水) 23:54:50
入力テキストを

1行目の内容 2行目の内容
2行目の内容 3行目の内容
:
最終-2行目の内容 最終-1行の内容
最終-1行目の内容 最終行の内容

という形(隣り合った行の値を空白で連結する)に変換するにはどう書けば
よいでしょうか。
sed -ne '1!p;$!p'
と通せば先頭末尾以外の行を2回出力できたので、
これを2行分ずつくっつければ出来そうなのですが…
名無しさん@お腹いっぱい。 [] 2010/12/23(木) 00:03:02
¥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
名無しさん@お腹いっぱい。 [sage] 2010/12/23(木) 00:47:03
seq 1 10 | sed -ne '1h;1!{H;x;s/\n/ /;p}'
名無しさん@お腹いっぱい。 [sage] 2010/12/26(日) 21:44:54
s/seq/jot/
名無しさん@お腹いっぱい。 [] 2011/01/15(土) 11:45:22
unixの基礎概念という本の中に
a 21
is 10
this 3
というtest.txtファイルに対して、
sed 's/\(.*\)\( *\)\(.*\)/\3\2\1/' test.txt
とすると結果は
21 a
10 is
3 this
になると書いてありましたが、実行してみると並びはかわりませんでした。
名無しさん@お腹いっぱい。 [sage] 2011/01/15(土) 11:49:07

確かに。それじゃぁ一番左側の .* が、最長一致で行全体に一致しちゃうから、
並びが変わらなくて正解。

悪書の書名晒して。
名無しさん@お腹いっぱい。 [sage] 2011/01/15(土) 11:50:52
久野さんらしくないミスだな。

確かに変わらないね。
名無しさん@お腹いっぱい。 [sage] 2011/01/15(土) 11:51:32

真中の * の直前のスペース、
スペース2つじゃないの?

コピペするとスペースが1つとかになるので注意。
名無しさん@お腹いっぱい。 [sage] 2011/01/15(土) 11:54:36
これかな? ttp://www.amazon.co.jp/dp/4756144772
久野先生の本だけど、そんなのが混ざってるのか。
名無しさん@お腹いっぱい。 [sage] 2011/01/15(土) 12:01:42

はいそれです。解説にも
「これはどう読むかというと、『入力行を任意の文字列1と、空白のならび2と、また別の任意の文字列3
にマッチさせ、それ全体を3、2、1の順でつなげたものに置き換える』という意味になる。」と書いてあります。
名無しさん@お腹いっぱい。 [sage] 2011/01/15(土) 12:06:04

なら、の指摘通りで、キミが間違っている。
× sed 's/\(.*\)\( *\)\(.*\)/\3\2\1/' test.txt
○ sed 's/\(.*\)\( *\)\(.*\)/\3\2\1/' test.txt
名無しさん@お腹いっぱい。 [sage] 2011/01/15(土) 12:10:21
2chに不慣れな感じ
名無しさん@お腹いっぱい。 [sage] 2011/01/15(土) 12:11:56
專ブラなら安価ポップアップでちゃんと表示されるのかな

名無しさん@お腹いっぱい。 [sage] 2011/01/15(土) 12:14:12

紙面上に、└┘└┘みたいな感じでスペースの個数は明示してあるの?
明示してないなら紙面が悪いと思うが。
名無しさん@お腹いっぱい。 [sage] 2011/01/15(土) 12:36:36

空白2個ならいけるのですか。


そういう、└┘└┘みたいな感じはなかったです。文字数的にも一文字分の感じ
ですし。編集上のミスかもしれませんけど。
名無しさん@お腹いっぱい。 [sage] 2011/01/15(土) 14:25:37

> 「これはどう読むかというと、『...、空白のならび2と、...
って書いてあるんだろ?
名無しさん@お腹いっぱい。 [sage] 2011/01/15(土) 14:29:14

それは、¥2 のこと。「スペース2個」のことじゃないよ。
名無しさん@お腹いっぱい。 [sage] 2011/01/15(土) 14:31:27
空白のならび
名無しさん@お腹いっぱい。 [sage] 2011/01/15(土) 14:34:38

正規表現を理解してないバカ発見。

任意の文字列 → \1
空白の並び → \2
別の任意の文字列 → \3

と言ってるだけのこと。それとスペース2つ書くのとは意味が違う。
名無しさん@お腹いっぱい。 [sage] 2011/01/15(土) 14:44:12
むしろhtmlのレンダリングを理解していない
名無しさん@お腹いっぱい。 [sage] 2011/03/25(金) 20:16:28.23
任意の文字列の前か後ろの少なくともどちらかは、任意でない特定の文字・文字列(含^$)でないと困ったことになるということですね?
俺も前それで失敗した。
名無しさん@お腹いっぱい。 [] 2011/04/21(木) 06:41:06.41
sedの話題はこっちへ
くれぐれもシェルスクリプトスレに書き込まないように!
名無しさん@お腹いっぱい。 [sage] 2011/04/21(木) 13:17:24.83

\2,\3がφで全体がマッチ
\1に行全体

一つ目が\([^ ]*\)ならよかった。
忍法帖【Lv=38,xxxPT】 【東電 69.2 %】 株価【E】 [sage] 2011/04/27(水) 08:53:07.51
AAA BBB=111 CCC=111

この行の111を000に置き換えするのに
sed -e 's/BBB=111/BBB=000/'
とする以外にもっとスマートな書式を教えてください。

GNU sedです
名無しさん@お腹いっぱい。 [] 2011/04/27(水) 12:11:27.62

sed -e "s/1/0/g"
名無しさん@お腹いっぱい。 [sage] 2011/04/27(水) 12:35:36.38

> sed -e 's/BBB=111/BBB=000/'
これじゃ、お題
> この行の111を000に置き換えするのに
を満たさない。

矛盾を含む質問に答えることは不可能。
386 [sage] 2011/04/27(水) 13:29:23.92
>この行の111を000に置き換えするのに
この行のBBB=111だけをBBB=000にする書式でした
すいません。
名無しさん@お腹いっぱい。 [sage] 2011/04/27(水) 13:52:24.65
スマートの基準がわからないけど、BBBが二度出現するのが嫌なら

sed -e 's/\(BBB\)=111/\1=000/'
名無しさん@お腹いっぱい。 [sage] 2011/04/27(水) 14:59:23.65

s/111 /000 / で十分
名無しさん@お腹いっぱい。 [sage] 2011/04/27(水) 16:29:55.08
AAA BBB=111 CCC=111 DDD=111 EEE=1111
名無しさん@お腹いっぱい。 [sage] 2011/04/27(水) 19:10:11.78
sed -e /BBB=/{'s/111/000/'}

シェルスクリプトスレで覚えたやり方
名無しさん@お腹いっぱい。 [] 2011/05/18(水) 23:11:59.71
sed -e 's/<space><space>*/<space>/g' test.txt
って動かないんですが?
名無しさん@お腹いっぱい。 [sage] 2011/05/19(木) 09:49:48.72
動きますよ?
名無しさん@お腹いっぱい。 [] 2011/05/19(木) 10:16:19.05
EUCだとうまく動作しないのだが、これはデフォルトなのかな
名無しさん@お腹いっぱい。 [sage] 2011/05/19(木) 10:19:25.96
EUCでも問題ないけど。
名無しさん@お腹いっぱい。 [sage] 2011/05/19(木) 17:40:32.75
そもそも、EUCはそういうツールで不都合がないようにということで作られたわけで。
日本語独特の文節や漢字などに対応しない、というのはあるけど。
名無しさん@お腹いっぱい。 [sage] 2011/05/19(木) 18:16:12.59

> うまく動作しない

How?
名無しさん@お腹いっぱい。 [sage] 2011/05/19(木) 18:31:23.35
<space> ってそのまま打ってるってオチだろw
名無しさん@お腹いっぱい。 [sage] 2011/05/19(木) 19:04:04.07
>400
そのとおりでした;すいません
名無しさん@お腹いっぱい。 [sage] 2011/05/19(木) 19:05:53.32
EUCじゃないファイルではうまくいってたのか?
401 [sage] 2011/05/19(木) 20:27:32.13
>402 それは別人です
401 [sage] 2011/05/30(月) 17:29:13.86
偽物ばかり
氏ね
名無しさん@お腹いっぱい。 [sage] 2011/09/09(金) 13:29:22.13
急に Windows 7 64 bit で ssed が使えなくなっま。
名無しさん@お腹いっぱい。 [sage] 2011/09/12(月) 17:43:29.52
で?
名無しさん@お腹いっぱい。 [sage] 2011/09/26(月) 15:16:39.67
xp モードで解決したわけですね
名無しさん@お腹いっぱい。 [sage] 2011/11/30(水) 13:06:39.22
tab8のテキストをインデントを崩さずに半角スペースに置き換えるにはどうすればいいですか?
名無しさん@お腹いっぱい。 [sage] 2011/11/30(水) 14:42:23.70
expand -8
名無しさん@お腹いっぱい。 [sage] 2011/11/30(水) 14:49:05.34
sedで、じゃね。
名無しさん@お腹いっぱい。 [sage] 2011/11/30(水) 14:57:37.44
エスパーすると質問者は手段はsedじゃなくても良いと考えてる
名無しさん@お腹いっぱい。 [sage] 2011/11/30(水) 14:58:33.13
それならこのスレで聞かないでしょ。
名無しさん@お腹いっぱい。 [sage] 2011/11/30(水) 15:01:50.53
sedでもできそうだと勘違いしたからでしょ
名無しさん@お腹いっぱい。 [sage] 2011/11/30(水) 15:08:26.12

それなら「expand -8相当の処理をsedでやるには?」って聞くでしょ。
名無しさん@お腹いっぱい。 [sage] 2011/11/30(水) 15:34:39.95

expand を知らなかった、という可能性は。
名無しさん@お腹いっぱい。 [sage] 2011/11/30(水) 15:38:55.31

というかexpandを知らなかったからこそ
「tab8のテキストをインデントを崩さずに…」みたいな
まわりくどい言い方で聞いたんでしょ。
だからsedに関係なくexpandを回答すれば回答として十分。
名無しさん@お腹いっぱい。 [sage] 2011/11/30(水) 15:49:38.28

そろそろ正解を。
名無しさん@お腹いっぱい。 [sage] 2011/11/30(水) 15:50:50.14

expandを知らないけどsedを使わなければならない理由があるんだよ!
408 [sage] 2011/11/30(水) 17:44:22.28
すっごく登場しにくくなったけどさんが正解です。


エスパーさんありがとう。

皆さん混乱させてスイマセンでした。置き換えと言えばsedしか知らなかったので。
名無しさん@お腹いっぱい。 [] 2012/04/06(金) 20:12:58.82
文字列unkoの行を見つけてから文字列chinkoの行まで表示
ってどうやればいいの?
名無しさん@お腹いっぱい。 [sage] 2012/04/06(金) 20:38:54.03

当たり前過ぎるから回答は控えるけど、
エスパーすると -n オプション忘れて全部の行が表示されてしまったってオチだろな
名無しさん@お腹いっぱい。 [sage] 2012/04/06(金) 23:35:46.08
そんなことなくてその当たり前すぎる内容がわからない初心者さんなんでしょう。
回答してあげないなんてひどいね
名無しさん@お腹いっぱい。 [sage] 2012/04/07(土) 07:37:37.99

あ、-n だけのことだったんですね。失礼しました。


そこまで初心者じゃないです。
名無しさん@お腹いっぱい。 [sage] 2012/04/07(土) 08:46:29.91
自己申告乙
名無しさん@お腹いっぱい。 [sage] 2012/04/08(日) 06:16:06.93
初心者の土瓶口だけど、chinkoの前の行まで表示 ってのはできるの?
名無しさん@お腹いっぱい。 [sage] 2012/04/08(日) 06:20:31.95

/start/,/end/{/end/!p}
名無しさん@お腹いっぱい。 [sage] 2012/04/08(日) 08:34:53.99

いや、それは知ってるよ。
そういうことせずに直接○○の行の手前まで指定はできないのか聞いてるんだが
名無しさん@お腹いっぱい。 [sage] 2012/04/08(日) 16:24:07.33
unkoの次の行から、ってのは難しいのかな・・・
名無しさん@お腹いっぱい。 [sage] 2012/04/08(日) 16:42:05.75

startを含まず、endを含む場合
sed -n '1,/start/b; 1,/end/p'
名無しさん@お腹いっぱい。 [sage] 2012/04/09(月) 11:14:30.69
みんな1行野郎なの? スクリプトファイルは書かないの?
名無しさん@お腹いっぱい。 [sage] 2012/04/10(火) 11:14:22.67

スクリプト書くほどならperlで書いちゃう
名無しさん@お腹いっぱい。 [sage] 2012/04/11(水) 03:53:49.91
perlは英語のマニュアルが読めなくて挫折した。あんときperlがんばっとけばよかったorz
名無しさん@お腹いっぱい。 [sage] 2012/04/11(水) 08:09:32.29
書くよ
名無しさん@お腹いっぱい。 [sage] 2012/04/13(金) 05:52:55.50
DTPでテキストの整形するとき、いっぱい痴漢(←なぜか第一候補)するよ。
名無しさん@お腹いっぱい。 [sage] 2012/04/13(金) 18:41:21.71

俺はPerlは書籍で覚えたな、ラクダとあと何かUnixツールとして使うための本
名無しさん@お腹いっぱい。 [] 2012/08/06(月) 23:45:58.92
教えてください!
テキストファイルの最後にある空行を削除するにはどうすればいいですか?
$ 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 では';'や'+'が使えず、どうしてよいやら・・・
名無しさん@お腹いっぱい。 [] 2012/08/07(火) 00:42:37.55
パターンスペースが
空行だったらホールドスペースに追加
空行でなかったらホールドスペースを出力後にパターンスペース出力

最後の連続空行はホールドスペースに収まったままで終わる。

とか考えてみたがあってるだろうか。
名無しさん@お腹いっぱい。 [sage] 2012/08/07(火) 03:04:20.52
Nコマンドを使っていて必要な最期の行を全部すっとばしたことが、私にもありました
名無しさん@お腹いっぱい。 [] 2012/08/07(火) 22:00:53.40

多分やりたいのはそれだと思います。
具体的に同書けばいいのでしょう?
名無しさん@お腹いっぱい。 [sage] 2012/08/08(水) 02:01:32.99
もうawkかなにかで済ましてるだろうけど練習
437とは違うやり方になった
sed -n -e '
:loop
/^\n*$/{
N
b loop
}
p
'
名無しさん@お腹いっぱい。 [sage] 2012/08/08(水) 21:26:58.20

ありがとうございます!
うまくいきました。
名無しさん@お腹いっぱい。 [] 2012/08/17(金) 16:05:21.04
gsedですが、
ブラケット開きがあって、ブラケット閉じ以外のものが1つ以上あって、ブラケット閉じがある場合、
で、これどこがおかしいのでしょうか? ★☆が現れてくれないんですけど。
s/\[\([^\]][^\]]*\)]/[★\1☆]/g
名無しさん@お腹いっぱい。 [sage] 2012/08/17(金) 16:29:03.18

バックスラッシュが余計

sed 's/\[\([^]][^]]*\)]/[★\1☆]/g'
名無しさん@お腹いっぱい。 [sage] 2012/08/17(金) 16:43:13.83
ありがとうございます。
つまり、[ と ] の間にあるものはどんなものでも
「これは文字です」と宣言しなくてもいい(\が要らない)ということですか。
やってみます。ありがとうございました。
名無しさん@お腹いっぱい。 [sage] 2012/08/17(金) 16:45:03.71

そうなんだけど、] の場合は、[^ の直後にある場合のみ
普通の文字の ] とみなすという仕様。( [ の直後でも同様)
名無しさん@お腹いっぱい。 [sage] 2012/08/17(金) 18:35:40.56
テキスト   [aaa], [bbb] <あああ>の(アアア)と<いいい>の(イイイ)
欲しい結果 ★aaa☆, ★bbb☆ ★あああ☆の★アアア☆と★いいい☆の★イイイ☆
s/[<[(]\([^<>[]()][^<>[]()]*\)[>])]/★\1☆/g
予想はしたけど、まるで反応してくれません。
半角の約物3種類は欲張ったかなあ、と1つずつやってみているところです。
名無しさん@お腹いっぱい。 [sage] 2012/08/17(金) 18:37:54.56

に書いてあること読めよ。

[^ の直後に ] を置かないと、普通の文字としては認識されないんだよ。
[^....] の中の .... の順番を変えろということ。
名無しさん@お腹いっぱい。 [] 2012/08/17(金) 18:41:47.66

s/[[<(]\([^]<>()][^]<>()]*\)[]>)]/★\1☆/g
名無しさん@お腹いっぱい。 [sage] 2012/08/18(土) 03:20:55.76

ああ、すみません。言葉が足りませんでした。読んだ上でわざと変えてみたのです。
名無しさん@お腹いっぱい。 [sage] 2012/08/19(日) 00:04:02.62
え?
名無しさん@お腹いっぱい。 [sage] 2012/08/20(月) 16:08:01.31
ごめんなさい。は[]の中の[]に全部\を付けたつもりでした(このミスが大元ですね)

エスケープすればどの位置にあっても文字とするというsedを使っていたのと、
最長一致の正規表現も使っていたので混乱してしまいました。
「直後」を何度も言われていたのに、「直後『だけ』」に思いが至りませんでした。
名無しさん@お腹いっぱい。 [sage] 2012/10/25(木) 06:00:58.34
gsed で、置換コマンドの s を間違えて a と入力したスクリプトを実行したら、
一行ごとにその行が挿入されていて笑ってしまった。
a コマンドなんて知らなかったわ。
名無しさん@お腹いっぱい。 [sage] 2012/10/25(木) 06:04:10.00
笑えんなぁ。
名無しさん@お腹いっぱい。 [sage] 2012/10/25(木) 06:09:46.09
笑って許して♪
名無しさん@お腹いっぱい。 [sage] 2012/10/25(木) 06:45:25.34
gsed って置換するときにタグの数が合ってなくてもエラーが出ないのね。
名無しさん@お腹いっぱい。 [] 2012/10/25(木) 23:53:29.32
aなんて、edの基本じゃん!
名無しさん@お腹いっぱい。 [sage] 2012/10/27(土) 12:38:13.67
マニュアルでも最初のほうに来ちゃうしね
名無しさん@お腹いっぱい。 [] 2012/11/05(月) 10:24:08.04
質問があります

テキストファイルaaaの中身

<hoge>
abc
</hoge>

<hoge>
def
</hoge>

これを

<hoge>
def
</hoge>

のようにabcのタグだけ削除したい

sed -i "/^<hoge>\n abc\n<\/hoge>/d" aaa

これでは削除できませんでした。
改行を含む文字列を削除する場合どうしたらいいでしょうか?
名無しさん@お腹いっぱい。 [sage] 2012/11/05(月) 10:26:48.87
sedでやるのは無理があるんじゃないか。
名無しさん@お腹いっぱい。 [sage] 2012/11/05(月) 12:39:56.92

いや、なせば成る
名無しさん@お腹いっぱい。 [sage] 2012/11/05(月) 13:24:25.09
cat aaa | sed -e ':loop; N; N; !b loop; s/^<hoge>\n abc\n<\/hoge>//'
これで良いのかな?
名無しさん@お腹いっぱい。 [] 2012/11/05(月) 14:31:53.41

ありがとうございます
しかし削除できませんでした
ちなみにsedじゃなくて何でやったほうがいいでしょうか?
名無しさん@お腹いっぱい。 [sage] 2012/11/05(月) 14:34:20.66
Perl でも Ruby でも何でもいいよ。
名無しさん@お腹いっぱい。 [] 2012/11/05(月) 14:56:37.97

はい。ありがとうございます。できればシェルスクリプトで書きたいので
PerlでもRubyでも何でもいいとは思いますがそれ以外でいいコマンドはありませんでしょうか?
名無しさん@お腹いっぱい。 [sage] 2012/11/05(月) 15:19:40.83
grep -n abc して、出てきた数字でsedスクリプト作っちゃうとか。
名無しさん@お腹いっぱい。 [sage] 2012/11/05(月) 15:53:27.99

シェルスクリプトから呼び出せば良いんじゃないの?
sedだって所詮は外部コマンドだし。
名無しさん@お腹いっぱい。 [sage] 2012/11/05(月) 21:31:52.30

sed -n -f hoge.sed <aaa

hoge.sed:

/<hoge>/b hoge
p
b end

:hoge
N
N
/<hoge>\n abc\n<\/hoge>/!p
:end
名無しさん@お腹いっぱい。 [sage] 2012/11/06(火) 04:00:03.51

aaaがXMLならXMLパーサ(を使える言語)を使った方がいいと思う
/<hoge>/!b
:loop
$b last
/<\/hoge>/!{
N
b loop
}
:last
s/<hoge>[ \n\t]*abc[ \n\t]*\(<\/hoge>\)*//g
名無しさん@お腹いっぱい。 [sage] 2012/11/20(火) 09:09:15.11
すみません。教えて下さい。
テキストの最終行のあとに空白行を1行入れる、というのはどう書くのでしょうか。
iコマンドでは最終行の前に空白行ができてしまいます。
名無しさん@お腹いっぱい。 [sage] 2012/11/20(火) 09:23:56.98
sed -e '$a\
hoge
'
名無しさん@お腹いっぱい。 [sage] 2012/11/20(火) 09:30:53.76
ありがとう。助かりました。
名無しさん@お腹いっぱい。 [sage] 2012/11/22(木) 01:22:12.85
最終行の後なら

$ cat >> tmp

$
で十分であるようにも思うけどなぁ
名無しさん@お腹いっぱい。 [sage] 2012/11/22(木) 03:29:10.92
ああ、なるほど。いつか思い出して使うこともあるでしょう。ありがとう。
名無しさん@お腹いっぱい。 [sage] 2012/11/22(木) 07:19:23.18

1行追加ならechoの方が楽でね?
名無しさん@お腹いっぱい。 [sage] 2012/11/22(木) 11:59:50.11
そうなんだけど、sedファイルの中に書き込みたかったんですよ。でも、ありがと
名無しさん@お腹いっぱい。 [sage] 2013/01/04(金) 10:51:16.73
optimized sed
ttp://www.commandlinefu.com/commands/view/11707/optimized-sed
巨大ファイル対象の場合は
sed '/foo/ s/foo/foobar/g' <filename>

sed 's/foo/foobar/g' <filename>
よりも効率がよいとの事ですが、どういう原理でそうなるんでしょうか
名無しさん@お腹いっぱい。 [sage] 2013/01/04(金) 12:52:49.06
"foo"の在る行だけを対象にするから?
どのみち見つけに行くんだから同じじゃん?と想ったり想わなかったり
名無しさん@お腹いっぱい。 [sage] 2013/01/04(金) 12:55:13.46

100万行のテキストファイル、GNU版のsedで試してみたけど
どっちも変わらなかったぞ
名無しさん@お腹いっぱい。 [sage] 2013/01/05(土) 01:12:15.15
つまり、都市伝説って事か
どのsedかによっても違うんだろう
名無しさん@お腹いっぱい。 [sage] 2013/01/05(土) 09:49:03.44
対象になる行の割合にもよるんじゃないの?
478 [sage] 2013/01/05(土) 10:26:37.21
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
名無しさん@お腹いっぱい。 [sage] 2013/04/08(月) 00:25:48.59
>type diff
diff is /usr/bin/diff
> type diff | sed 's,[()],,g;s,^[^/][^/]*,,;q'
/usr/bin/diff
s,[()],,g;s,^[^/][^/]*,,;q'
ってどう解釈すれば良いんですか?
名無しさん@お腹いっぱい。 [sage] 2013/04/08(月) 05:56:57.86
人それぞれ
で良いんじゃない
名無しさん@お腹いっぱい。 [sage] 2013/05/21(火) 06:44:35.71
Macでgsedを使っています。やりたいこと
★のある行と☆のある行の間にある行のうち、ひらかなを含む行の行頭に@を付ける。
(ひらかなが1文字でも入っていれば良い)

/★/,/☆/{
/[あ-ん]/s/^/@/
}

無視されてしまうんです。助けてください。
484 [sage] 2013/05/21(火) 08:34:08.57
[あ-ん]がいけなかったみたいです。[あいうえお(中略)ん、。]でできました。
名無しさん@お腹いっぱい。 [sage] 2013/05/21(火) 13:23:01.78
あ-ん♪
名無しさん@お腹いっぱい。 [sage] 2013/05/21(火) 16:08:58.36

ぽーつ使ってるならssed入れてpcre環境にすれば\p{Hiragana}とか
できるんじゃね
名無しさん@お腹いっぱい。 [sage] 2013/05/22(水) 03:36:42.23
ごめんワカンナイ
名無しさん@お腹いっぱい。 [sage] 2013/05/22(水) 16:53:09.99
ssedって次期GNU sedのこと。
GNUのページでもこの拡張には依存するなって書いてる。
ただ、macでBSD系のsedじゃなくGNU sed使ってるんなら
port依存って意味ではあんまり変わんないんじゃない?
名無しさん@お腹いっぱい。 [sage] 2014/03/04(火) 03:45:38.92

横から&亀だが

sed '/pattern/ {
'"`sed 's/^/i\\\\\n/' <file`"'
}'
名無しさん@お腹いっぱい。 [sage] 2014/06/03(火) 18:27:21.57
gnuWin32のsed version4.2.1です
sedで、"を入れたくて下記のようにしたのですが、うまくいきません。どうしてでしょうか

sed -e "s/^/ \"/" hoge.txt > hoge2.txt

エスケープの\がうまく利かず、
sed: >を読み込めません
というわけわからんエラーメッセージが出てきます
ちなみに、

sed -e "s/^/ \\/" hoge.txt > hoge2.txt

とかならちゃんと動きます
名無しさん@お腹いっぱい。 [sage] 2014/06/28(土) 14:33:09.63

UNIX板で答えない方が良いのかもしれませんが、適当なスレが無さそうなので
windows のコマンドプロンプトで実行しているとして答えます。

cmd.exe の仕様が原因と思われる
sed -e "s/^/ "^""/" hoge.txt > hoge2.txt
名無しさん@お腹いっぱい。 [sage] 2014/06/28(土) 14:56:57.91
sedを使用する際の注意事項があります。
コンピュータのCPUが何ビットであるか調ベておく事が大切です。

32ビットCPUを搭載したコンピュータには、
32ビット用のsedをインストールすること。

64ビットCPUを搭載したコンピュータには、
64ビット用のsedをインストールすること。

これを間違えれば正常にsedが動作しません。
名無しさん@お腹いっぱい。 [sage] 2014/08/20(水) 00:07:25.20
sedの使い方がわからず、試行錯誤しているのですが、うまくいきません。
行の先頭に特定の文字列(たとえば"abc")があったらその行を丸ごと"xxxxxxxxxxx"に置換するにはどうすれば良いでしょうか。

例:
abc123456

xxxxxxxxxxx
に変換さえるイメージです。
名無しさん@お腹いっぱい。 [sage] 2014/08/20(水) 01:37:59.80

sed -n /^abc/p
sed s/^abc.*$/xxxxxxxxxxx/
名無しさん@お腹いっぱい。 [] 2014/08/20(水) 01:39:49.69
パイプで使うバージョンを書く
|sed 's/^abc.*/xxxxxxxxxxx/'
名無しさん@お腹いっぱい。 [sage] 2014/08/20(水) 02:29:51.22
sed '/^abc/cxxxxxxxxxxx'
名無しさん@お腹いっぱい。 [sage] 2014/08/20(水) 03:06:02.58
abc -> xxx
abc123 -> xxxxxx
abc12345 -> xxxxxxxx
をsedでやるならどう書くんだろ
名無しさん@お腹いっぱい。 [sage] 2014/08/20(水) 06:22:02.63

s/./x/g
名無しさん@お腹いっぱい。 [sage] 2014/08/20(水) 10:13:13.33

sed '/^abc/s/./x/g'
かな?
名無しさん@お腹いっぱい。 [sage] 2014/09/17(水) 02:37:37.33
パスワードのゼロ埋め(ゼロパディング)と見た。
名無しさん@お腹いっぱい。 [] 2014/10/21(火) 08:56:25.00
バックスラッシュって読みやすいか?日本語だと使い道無いし。

プログラミングで正規表現書いてると、
s/\dhoge\sfuga\s/hoge/
↑似たような記号ばっかりで読みづらいw

s/¥dhoge¥sfuga¥s/hoge/
↑こっちのほうが読みやすい
名無しさん@お腹いっぱい。 [sage] 2014/10/21(火) 10:00:39.43
使い道ある記号だったらエスケープシーケンスにも
円記号ねじ込むにも適さなかっただろうよ
名無しさん@お腹いっぱい。 [sage] 2014/10/21(火) 11:48:25.80
最近可愛く見えてきた。意味を持たない組み合わせに腹を立てたり。
名無しさん@お腹いっぱい。 [sage] 2014/10/21(火) 13:00:32.47
スラッシュとバックスラッシュが紛らわしいんならスラッシュ以外の
文字を区切りに使えばいいんでないの?
名無しさん@お腹いっぱい。 [sage] 2014/10/21(火) 13:05:36.87
区切りを変更できるのはsコマンドとかの時だけ
名無しさん@お腹いっぱい。 [] 2014/11/06(木) 07:19:05.88
1,/hoge/ のようにaddressに正規表現を使う時のスラッシュを
他の記号に変えることはできますか?
s@ttp://@https://@ のようなことをしたいのです
名無しさん@お腹いっぱい。 [sage] 2014/11/06(木) 08:27:36.11
にあるようにできない。
名無しさん@お腹いっぱい。 [sage] 2014/11/06(木) 08:42:54.81
できる実装もあるかもしれない
名無しさん@お腹いっぱい。 [sage] 2014/11/06(木) 09:21:40.14
コピペ改変にかまうな
名無しさん@お腹いっぱい。 [] 2014/12/23(火) 16:27:26.38
他人が書いたコードで、例えば文字列が、
11 AAA [BBB] CCC/DDD.txt EEE FFF-01
だった場合に、ここから[]内の文字(BBB) を抜き出すために、
sed -e 's/\[//g' -e 's/\]//g' | awk '{ print $3 }'
というスクリプトで BBB を取得しています。

このスクリプトを変更して、DDD を取得したいのですが、
どう書けば良いのでしょうか?
名無しさん@お腹いっぱい。 [sage] 2014/12/23(火) 19:23:47.26
s,.*/,,; s,\.txt.*,,
名無しさん@お腹いっぱい。 [sage] 2014/12/24(水) 15:41:51.14
ありがとう
名無しさん@お腹いっぱい。 [sage] 2014/12/28(日) 06:55:35.52

1,\@hoge@

linuxで確認済み
検索でここにたどり着いた人の為と、何処のコピペか検索してもそれらしいものが出なかったので、貼っておきます

POSIX
sed
ttp://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html
In a context address, the construction "\cBREc", where c is any character other than <backslash> or <newline>, shall be identical to "/BRE/".
If the character designated by c appears following a <backslash>, then it shall be considered to be that literal character,
which shall not terminate the BRE. For example, in the context address "\xabc\xdefx", the second x stands for itself,
so that the BRE is "abcxdef".

BSD
On-line Manual of "sed"
ttp://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=sed&dir=jpman-5.4.0%2Fman&sect=0
1. コンテキストアドレスにおいて、バックスラッシュ (``\'') と改行以外の 文字を正規表現の区切りとして用いることできます。
区切り文字の直前に バックスラッシュを置くことで、区切り文字をリテラルに解釈させることが できます。
たとえば、コンテキストアドレス \xabc\xdefx において、区切 り文字は ``x'' で、2つめの ``x'' は ``x'' という文字を表します。
よっ て、正規表現は ``abcxdef'' と解釈されます。

LINUX
Man page of SED
ttp://linuxjm.sourceforge.jp/html/GNU_sed/man1/sed.1.html
/regexp/
正規表現 regexp にマッチした行にマッチする。
\cregexpc
正規表現 regexp にマッチした行にマッチする。c には任意の文字を指定できる。
名無しさん@お腹いっぱい。 [sage] 2014/12/28(日) 17:04:08.20
おおお、グレート義太夫
名無しさん@お腹いっぱい。 [sage] 2016/02/10(水) 23:22:09.08
どうにも理解が出来ず教えて欲しいのですが
ttp://sed.sourceforge.net/sed1line.txt

から
# print paragraph if it contains AAA (blank lines separate paragraphs)
sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;'

これがどうにもわかりません。
H;$!d;の$!dが何故必要なのか?
動作の流れを教えて頂けないでしょうか?
516 [] 2016/02/21(日) 00:09:27.85
age
名無しさん@お腹いっぱい。 [sage] 2016/02/21(日) 01:34:16.62
タダで教えろって?
名無しさん@お腹いっぱい。 [sage] 2016/02/21(日) 10:27:51.16
dがあるのは段落の区切りまで何も出力させないため

ファイル末尾も段落の区切りだから$!が要る
ファイル末尾に必ず空行があるなら$!は要らない

dでそのサイクルが終了することは知ってますね?
名無しさん@お腹いっぱい。 [sage] 2016/02/21(日) 10:54:53.96
10日も呆けーと待ってたことに驚き
名無しさん@お腹いっぱい。 [sage] 2016/02/21(日) 13:02:47.07
でも教えてもらえたじゃないかw
名無しさん@お腹いっぱい。 [sage] 2016/02/21(日) 14:02:51.01
自分で試せば小一時間で気付くのに、と思う
516 [sage] 2016/02/21(日) 16:55:28.79

有り難うございます。助かりました。
!dをpの様に認識してしまっていて次のサイクルに移行させる
イメージがなく、$!dを最終行を表示させるとしか思ってなくて
色々試してもどうにも腑に落ちないもので質問させて頂きました。
名無しさん@お腹いっぱい。 [] 2016/04/28(木) 22:19:31.31
sedで桁そろえってどうしたらいいですかる
具体的にはls -l で出てきた結果のうち、ファイル名を最初に左揃え、ファイルサイズを右揃えで出力したいのですが、
sedコマンドだけで可能ですか?
名無しさん@お腹いっぱい。 [sage] 2016/04/29(金) 06:51:34.85
そういうのは awk で。
名無しさん@お腹いっぱい。 [] 2016/04/29(金) 07:15:23.81
どうしてもsedだけでやたいんです!
お願いします!
名無しさん@お腹いっぱい。 [sage] 2016/04/29(金) 07:58:13.44
UNIX哲学に戻るんだ。
1つのことをうまくやる、ものを組み合わせればいいんだから、まずはawkでやってみる。
名無しさん@お腹いっぱい。 [sage] 2016/04/29(金) 08:26:18.75
awkでもいいが、シェル内部コマンドだけでもできるぞ。

ls -l | while read m l u g s t1 t2 t3 f
do
printf
名無しさん@お腹いっぱい。 [sage] 2016/04/29(金) 08:29:01.55
ありゃ? 記号があると書き込みが切れる。記号を全角にした。半角に直して読んでね。

ls -l | while read m l u g s t1 t2 t3 f
do
printf ”%-20s %8d %s\n” ”$f” ”$s”
done
名無しさん@お腹いっぱい。 [sage] 2016/04/29(金) 09:51:04.97
FreeBSD$ stat -f %-20N%8z *

Linux$ stat -c %-20n%8s *
名無しさん@お腹いっぱい。 [sage] 2016/04/29(金) 10:02:30.45
sedでの右揃えは、一旦中身のみを切り出してから左側に余分なスペースを加えてから
右から文字数固定で切り取る。
左揃えはその逆。
名無しさん@お腹いっぱい。 [sage] 2016/08/11(木) 22:51:26.97
の更新 NetBSDとOpenBSDの標準sedで-iが導入。
入力ファイルを書き換えるには?

・-i オプションをつかう
・-i オプションがないsedをつかっているなら in-place editing 対応の sed の導入を検討する
・ed を使うことを検討する
・perl を使うことを検討する
・一時ファイルを必要としないファイル命名法を検討する
ttp://www.idaemons.org/projects/inplace/  を使う
・(rm hoge.dat; sed 's/aaa/bbb/' > hoge.dat) < hoge.dat

FreeBSD の標準 sed に -i オプションが取り入れられたのは 4.7R でそれ以前には無い。
NetBSD の標準 sed に -i オプションが取り入れられたのは 7.0 でそれ以前には無い。
OpenBSDのの標準 sed に -i オプションが取り入れられたのは 5.8 でそれ以前には無い。
MacOSX の 標準 sed は FreeBSD 由来なので元になるバージョンに依存する。
MacOSX 10.3以降は FreeBSD 5.1R由来なので、 -iオプションはある。
以前のGNU sed には in-place editing 機能はない (Changelog によると 2001-09-25 ) (3.02には in place オプションは無い)
名無しさん@お腹いっぱい。 [sage] 2017/03/17(金) 14:26:32.28
データハンドリングとしては、
入力ファイルをコピーして更新をかける
更新処理が終わったら、入力ファイルを削除して更新ファイルをりネームして入力ファイルとする
みたいな方法で必要十分。
なんでもかんでもツールで処理するのではなく、OSが得意な機能はOSのものを使う。
クラッシュがいつ起こってもデータが確保できるのは、そういう、むしろドンくさい方法。
お遊びならいざしらず、仕事では安全確実性が少しでも高い方を選ぶのがプロ。

無論、履歴から復元なんてのも、データによっては必要だが、
処理が複雑になれば、一般的にトラブルも増える。
どこまで何をやるかは、ひとえにそのデータの重要性にかかっている。
バックアップから戻してもたいした事がないなら、何やってもいいだろう。
名無しさん@そうだ選挙に行こう! Go to vote! [sage] 2017/10/22(日) 14:32:07.16

どうだろうね。数式の入った文章を写植
は、昔の印刷物のほうが上でしょ。
印刷屋に頼んでもtexの設定をそのまま
つかわずindesignに読み込むから、
ひどいものだ
名無しさん@そうだ選挙に行こう! Go to vote! [sage] 2017/10/22(日) 15:59:51.51
昔も今もTeXでやってくれる印刷屋に頼めばいいじゃん。
名無しさん@お腹いっぱい。 [sage] 2017/12/08(金) 20:25:27.67
今も昔も餅屋のふりした餅屋はたくさんあるからな〜。餅の見る目のない会社だったってことで。
名無しさん@お腹いっぱい。 [] 2017/12/29(金) 10:21:45.77
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。

グーグル検索⇒『宮本のゴウリエセレレ』

8DL33JQ0HX
名無しさん@お腹いっぱい。 [age] 2018/01/18(木) 12:08:00.54
ttps://mevius.5ch.net/test/read.cgi/unix/1489979246/l50
ここから来ました。
sedでiフラグとdフラグを両方立てることってできないのでしょうか。
$ cat file
aaa
AAA
$ cat file | sed -e '/aaa/id'
AAA
d
aaa
名無しさん@お腹いっぱい。 [sage] 2018/01/18(木) 12:57:27.52
頑張って /[Aa]\{3\}/d と書く
今時の正規表現修飾子とか使えるsedがあるなら俺も知りたい
538 [sage] 2018/01/18(木) 13:11:30.41

ありがとうございます。とりあえずその路線で行きます。
素人目にはiフラグとdフラグを同時に使えないというのは極めて不自然というか
非対称な気もしますが……
二つの役割は直交関係にあって,別に依存・背反はないと思うんですよねぇ。
名無しさん@お腹いっぱい。 [sage] 2018/01/18(木) 16:19:03.70
GNU sedなら I 大文字が使えるじゃあないか
538 [sage] 2018/01/18(木) 16:43:03.48
$ printf '%s\n%s\n%s\n' 'AAA' 'Bbb' 'aaa' | gsed -e '/a/Id'
Bbb

おおおおおお!ありがとうございます。Iフラグは知りませんでした!
しかしこれ GNU の独自拡張なんですよねぇ……欲を言えばPOSIX標準に従いたかったんです……
すいません。とりあえずの一文字づつ手動で置き換えるというやりかたで通します。
そして今気付いたんですが iという文字はフラグだけでなくて「行挿入」というコマンドとしての
解釈もあるんですね。だから「id」でdが当該箇所に挿入された形になったんですね。
馬鹿だなぁ俺
名無しさん@お腹いっぱい。 [sage] 2018/01/19(金) 06:11:37.28
iもdもコマンドじゃないの?
542 [sage] 2018/01/19(金) 16:10:54.99

あーその通りですわ。
逆になぜ id で大文字小文字を無視して削除ができると思ったのか疑問なくらい阿呆でした……。
精進し直します。

# 素人考えで言うと「大文字小文字を無視して検索→その行でコマンド実行」なんて頻繁に実行するだろうに
それに対応した機能が (POSIXの範囲で) 存在しないってのはちょっと頂けないですねぇ……
# 尤も上級者の方々は他の,もっと優美な方法を採ってらっしゃるのかも知れませんが。
名無しさん@お腹いっぱい。 [age] 2018/02/03(土) 04:17:58.88
ある文字がある回数続く*行*を置換することってできないんでしょうか。
...
xbcea
aaa
aaa
aaa
dkjef
...
↑このようなファイルで、
cat ./file | sed -e 's/aaa\naaa\naaa/bbb/g'
とやることで
...
xbcea
bbb
dkjef
...
このような出力が得られることを望んでいるのですが、上記のコマンドでは無理でした。> <
ご教授願いますm(_ _)m
名無しさん@お腹いっぱい。 [sage] 2018/02/03(土) 04:47:53.50
printf "xbcea\naaa\naaa\naaa\ndkjef\n" | sed '/aaa/{H;d;};/aaa/!{x;/^$/d;s/aaa\naaa\naaa/bbb/p;x;}'

汚いw
名無しさん@お腹いっぱい。 [sage] 2018/02/14(水) 10:22:09.93
☆ 日本の、改憲をしましょう。現在、衆議員と参議院の両院で、
改憲議員が3分の2を超えております。『憲法改正国民投票法』、
でググってみてください。国会の発議はすでに可能です。
平和は勝ち取るものです。お願い致します。☆☆
名無しさん@お腹いっぱい。 [] 2018/05/22(火) 03:04:16.83
知り合いから教えてもらったパソコン一台でお金持ちになれるやり方
時間がある方はみてもいいかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

9M87D

勢い5万以上のスレをメールでお知らせするサービス、実施中!!
憧れボディをGETしたい!その夢、ボニックで!

2ch勢いランキング 全部 1- 最新50 UNIX板ランキング

凡例:

レス番

100 (赤) → 2つ以上レスが付いている
100 (紫) → 1つ以上レスが付いている

名前

名無しさん (青) → sage のレス
名無しさん (緑) → age のレス

ID

ID:xxxxxxx (赤) → 発言が3つ以上のID
ID:xxxxxxx (青) → 発言が2つ以上のID

このページは2ch勢いランキングが作成したキャッシュです。元のページはこちら。削除についてはこちら