1read 100read
2013年01月UNIX107: sed (481) TOP カテ一覧 スレ一覧 2ch元 削除依頼
FreeBSDを語れ Part35 (368)
【熱く】お前のEmacsにはまった理由【語れ】 (538)
私は感動した!!ありがとうUNIXの皆さん!2006夏〜 (790)
PPPoE (PPP over Ethernet) スレッド (294)
PPPoE (PPP over Ethernet) スレッド (294)
UNIXerなアニヲタは何に萌えてますか? Part4 (582)

sed


1 :04/05/28 〜 最終レス :2013/01/05
sedスレッド

2 :
2

3 :
sed -e '1,2d' -e '4,$d'

4 :
sed -E -e '=' test | sed -E 'N;s/\n/: /' | sed -E 's/^([0-9]: )/0\1/'
これをパイプを使わずに表現したいんですけど、どうすれば出来ますか?

5 :
sedのスクリプトで?
sed -f hoge test
なかんじ?

6 :
>>5
はい。
#!/usr/bin/sed -f
{
=
N
s/\n/: /
s/^([0-9]: )/0\1/
}
としてもうまく行かなくて悩んでいます。

7 :
適材適所という言葉があるだろうに…
% awk '{printf "%02d: %s\n", NR, $0}' test

8 :
例えば
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桁の行番号と:を追加するのはなぜうまく出来ないのか
疑問に思ったのです。

9 :
ム板のawkスレの住人だな?

10 :
http://pc5.2ch.net/test/read.cgi/linux/1067815570/

11 :
【貝】第1回シェル講座【殻】
http://pc5.2ch.net/test/read.cgi/unix/1016372780/
☆シェルスクリプトを勉強するにあたって☆
http://pc5.2ch.net/test/read.cgi/unix/989659936/
ここらへんに合流すれば? そういう話題結構でてるよ
これだけではなんなので。日本語で読める sed に関する文献としては
「MS-DOS を 256倍使うための本 Vol.3」が No.1 です。おすすめ

12 :
古いけどそこそこ良くまとまったサイトを紹介してみよ。
ttp://www.gcd.org/sengoku/sedlec/

13 :
メールの中身で
添付ファイルのデータが開始するbase64という文字列があった後のデータ全部切り抜いて出力したいんですが
sedで可能でしょうか?

14 :
>>13
http://www.gcd.org/sengoku/sedlec/12.txt

15 :
From: hoge hage <hoge@moe.com>
↑ これの < > の中に入ってるメールアドレスを、抜き出したいんですが、どうすればいいでしょうか?

16 :
sed 's/.*From.*<\(.*\)>.*/\1/'
じゃダメ?

17 :
>16
ありがとうございます
後は加工して使おうと思います。

18 :
ど素人です。
sedでMIFESのグローバル置換みたいなことってできないですか?
あるディレクトリに存在する複数のファイルをワイルドカード指定で入力して
一括して置換してもとのファイルにリダイレクトしてやるみたいな。
下記のイメージで(下記はとおらないですけど・・)。
sed -e 's/aaa/zzz/g' < * > *
1日中ぐぐってぐぐってもがいたけどわかりませんでした。すごいひと教えてください。

19 :
すごくなくてもできる。とりあえず、シェルスクリプトすれに池。
もっと短くできるが、何をやっているかわかりやすく説明するのをかねて↓
find -type f | while read file ; do
mv ${file} ${file}.backup
cat ${file}.backup | sed -e "s/aaa/zzz/g" > ${file}
done

20 :
次世代sed登場
ttp://news.tbs.co.jp/newseye/tbs_newseye1037945.html

21 :
>>19
おわっ。あっさりできたっ。どうもありがとです!
シェルスクリプトすごい便利。勉強しなきゃですね・・。

22 :
bash上でなのですが、
hoge=`echo ../tmp/work.c | sed 's/\//\\\//g'`
を実行しようとすると、
sed: -e expression #1, char 9: Unknown option to 's'
となってしまうのは、なぜですか?
/を\/に置換したいだけなのです。

23 :
>>22
sed 関係ないやん
\ → \\

24 :
うーん、確かにシェル向けのネタなのかもですが、
echo ../tmp/work.c | sed 's/\//\\\//g'
だけだと動くのがよくわからなくって。

25 :
いいことを教えてあげよう。
's@hoge@hage@g'とやってごらん。

26 :
command not found
でした・・・って、そういう意味ではないのかな・・・。

27 :
s/..../..../g は s@....@....@g とも書ける
という意味

28 :
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を取り出したいのですがうまくいきません
結果は
<>
となります
どうすればいいのでしょうか?

29 :
space, tab を区切りにして何番目の要素って選択したほうがいいんじゃないの。

30 :
先頭の.* が % の直前までマッチし、
\d* が長さ0、
% が % にマッチ、
最後の .* が残りの部分にマッチしてるからね。

31 :
そもそも \d なんて使える sed あんの?

32 :
sedsedesedesedesed

33 :
sed(sede){3}sed

34 :
hosyu

35 :
しーずか〜な〜しーずかな〜
さーとのーあ〜きぃ〜
おーsed〜にきぃ〜のみが〜
お〜ちる〜よ〜は〜

36 :
http://www.chimimo.com/sed/

37 :
sedは日暮れて〜夕波小波〜

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

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

でうまくいきますが、temp.txt中の"-"と"+"と数字以外の文字を空白に変換するには
どう記述すればよいのでしょうか
sed 's/[^\-\+0-9]/ /g' temp.txt
では文法エラーになってしまいます。

39 :
>>38
+と−の順番が逆でした。
以下に訂正。
temp.txt中の"-"と"+"以外の文字を空白に変換するには

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

でうまくいきますが、temp.txt中の"-"と"+"と数字以外の文字を空白に変換するには
どう記述すればよいのでしょうか
sed 's/[^\+\-0-9]/ /g' temp.txt
では文法エラーになってしまいます。

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

41 :

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

Cygwin についてくるsed です。
sed 's/[^-+0-9]/ /g' temp.txt
これは問題なく正常動作しました。


42 :
>>41
>
> >>40
> > うちの OS だと、ならんけど?
> > まあ
> > sed 's/[^-+0-9]/ /g' temp.txt
> > って書いた方が簡潔だとは思うが。
>
>
> Cygwin についてくるsed です。
>
> sed 's/[^-+0-9]/ /g' temp.txt
>
> これは問題なく正常動作しました。
>
>
sed 's/[^+-0-9]/ /g' temp.txt にするとだめです。
+と0の間にあるコードと解釈されるらしい。

43 :
>>42
> sed 's/[^+-0-9]/ /g' temp.txt にするとだめです。
仕様です.
http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=re_format&dir=jpman-5.2.0%2Fman§=0

44 :
すまん url 化けてた.
http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=re_format&dir=jpman-5.2.0%2Fman§=0

45 :
なんでperl使わないの?

46 :
>>45
どうやって、perl おぼえた?

47 :
なんでperl使うの?

48 :
らくだ本に一万円投資しちゃったからとか。

49 :
どうやって perl インストールしたの?

50 :
インストールできなかったの?

51 :
FreeBSD の sed って c コマンドの後のコマンドも実行するね。
これってバグじゃね?

52 :
>>51
意味不明.

53 :
perlは、難しいので
sed & awkでやって逝く事にしました。

54 :
適材適所ってこともあるんだよもん。

55 :

若者は、PERLを消化して部位部位いわせsed&AWK何それ?状態
案外、sed&AWKを学ぶ必要がなかったりする?
新しいのについて行けずに、たちどまってしまったオッサンは、sed&AWK
せめてPERLぐらいやる。だだでえくいっぱぐれてるのに
両方の言語を使用したことのあるエキスパートに意見を伺いたい
sed&AWKなら簡単にできてPERLなら難しい処理例
PERLなら簡単にできてsed&AWKなら難しい処理例
若者、おっさんに向けての指針等など

56 :
sed 's/hoge/hage/'
のほうが
perl -pe 's/hoge/hage/'
より短い。

57 :
ぐれてないでまず日本語を学ぶ >だだでえくいっぱ

58 :
大岡山のキティに英語の勉強しろといわれたので、伊藤和夫先生のテキストで勉強しました
-xx-xx-xxなperlは、使用しない故スティーブンス先生にも意見を聞きたいので
>>59
召還ヨロシク

59 :
>>58は浪人生

60 :
sed 's/い/お/g' file
で、
file内の「いっぱい」が「R」に置換されるのは、
正 常 !

61 :
s/い/お/g ←「g」付きだと置換結果は「おっぱお」じゃないの?

62 :
質問です。bashにてGnu sed ver4.0.9を用いて
echo hoge,uge,hage,age,sage | sed 's/uge,.*\?,//g'
を実行しました。
hoge,age,sage
が出力されることを期待したのですが、実際の出力は
hoge,sage
でした。
*や+の後に?を指定すると、例えばperl,pythonなんかでは
*や+は non greedy となるので、
sedでもそうなるものと考えてたのですが、何か間違っていたのでしょうか。
また、*や+を non greedy とするにはどうすれば良いのでしょうか。
よろしくお願いします。

63 :
>>62
man sed しました?
man sed の SEE ALSO 見ると、
GNU sed が regex(7) (POSIX 1003.2) に (大体) 準拠してるとあると思いますが、
POSIX 1003.2 に non greedy な量指定子は無いです。
何か他の方法をとる必要があるかと。

64 :
ありがとうございます、とりあえず>62に関しては
's/uge,[^,]*,//'
とすることにします。

65 :
abc xyzをaxbyczにしたいのですが

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

67 :
sed 's/abc xyz/axbycz/'

68 :
>>65
echo abc xyz |sed -e "s/^/%/; :ll; s/[%]\(.\)\(.*\) \(.\)\(.*\)/\1\3%\2 \4/; tll; s/%//;"

69 :
>>66
>だれ? は、
>大岡山のキティ
>伊藤和夫
の以上2つのうち誰の素性を知りたいのだね?

70 :
68は「大岡山のキティ」本人で複数の人間に「英語の勉強しろ」と言っていた、
という可能性は無いの。

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


72 :
GNU sedのVersion 4で、マルチバイトパッチをあてたVsersion 3みたく文字コー
ドを決めうちして変換する(ctype=EUCみたいに)方法はないのでしょうか。
jiskan16.bdfに外字を足してテキスト処理をやっているのですが、行頭に外字の
コードがくると、Version 4.1.4では誤認識してしまうのをなんとかしたいのです
が。

73 :
grepもUTF-8使えるようになって欲すい。

74 :
FreeBSDでutf-8なロケールでgrep使えばOK。


75 :
sedで四則演算系は作れますか? 理由も教えてください。

76 :
宿題は自分で。

77 :
>>72
bashを使っているとして、LANG=ja_jp.eucJP sed -e "s/hogehoge/fugaguga/"
みたいなのじゃダメなの?

78 :
>>76
分からないのならレスすんな。

79 :
煽っても無駄ですよ。宿題は自分で。

80 :
75に答えているので78はレスしないでください。

81 :
>>77
情報小出しですみません。LNAGは設定してます。
ググってもsedの古いソースがみつからなかったので、とりあえずは、Vine2.6
の3.0.2 (だかなんだかの)のバイナリを入れて動かしてますんで、当面は困っ
てはいないのですが、システムのバージョン上げるときに、個別対応する項目
が増えるのは面倒だなと思って質問した次第です。

82 :
>>81
GNU sedは4.xでマルチバイト文字対応が別の形で入ってるからね。
3.Xのローカライズパッチではそれほど厳密には検査されなかった
文字範囲が厳しくなってる可能性がある。
内部的には wide character に変換してごにょごにょしてるんだけど、
外字だとここでひっかかるのかもね。最悪自分でソースに手を入れて
wrapper関数書くしかないかも(外字をPUAにわりあてちゃうとか)。

83 :
>>81
> ググってもsedの古いソースがみつからなかったので、
Ring server にあらかたのバージョンあったよ。
もちろん日本語対応パッチはそこにはないんだけど
(これはほかを探せばある)。

84 :
http://pc8.2ch.net/test/read.cgi/unix/1113664637/298
Nで次の行もパターンスペースに読み込んでいた場合に、
d と D の違いが出る。

85 :
>>84
ありがとう

86 :
>>84,85
Nに加えて、sなどで意図的にパターンスペースに改行を入れることもあるよ。
Nを行の先読みに例えれば、後者は行の差込み挿入のような意図で行うんだけど。
その場合にもdとDの違いが出る。

87 :
半角かなをsedで一括置換しようと
下のようなスクリプトを試しましたが
うまくいきません
解決策を教えてください
s/タ/\\={a}/g
s/ツ/\\={\\i}/g
s/ト/\\={u}/g
s/ニ/\\uc{r}/g
s/ヌ/\\uc{\\={r}}/g
s/ハ/\\uc{l}/g
s/゙/\\d{h}/g
s/ワ/\\d{m}/g
s/フ/\\.{n}/g
s/ホ/\\~n/g
OSはwindowsXPですが
sedはunix由来だからここで伺ってます
すみません

88 :
>>87
nkf じゃだめなん?

89 :
>>87
UNIX上のsedなら、それでちゃんと動作するよ。

90 :
>>88
すみません、nkfで上記の置換を行う方法がわかりません
よければ教えてください
>>89
可能であれば、windowsで動作した方がいろいろと好都合
ですので...

91 :
>>90
UNIX上のsedでは動作

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

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

UNIX板でこれ以上聞いても無駄

92 :
88、89さん申し訳ありません
wiodows上でのsedでも87のsed置換は可能です
私の勘違いでした
改めて質問させていただきます
設定済みmeadowを使って
リージョンを設定して
M+shift+|で87のsedスクリプトを走らせた場合
\になってほしい部分が化けてしまいます
原因や対処方法がおわかりに方がいらっしゃったら
ご教示願えませんでしょうか?

93 :
set-process-coding-system

94 :
>>93
ヒントありがとうございます
上述したように
リージョンにコマンドを渡す方法を使う場合
set-process-coding-systemの記述は
どこに、こんな風に記述すればよろしいのでしょうか?
頭が悪いので設定方法がわかりません
よろしければ教えてください

95 :
>>94
ずっと効くから.emacs に書いとけ。

96 :
>>92
半角かなばっかりの文書を置換するのはできるみたいですが
漢字が混じってたら漢字は化けます
対処方法がありますか?

97 :
>>96
> 対処方法がありますか?
おまえ朝鮮人のにおいがぷんぷんするんだが。
やっぱり朝鮮人だったか。おねがいだから、国に帰ってくれ。

98 :
sed /^$/q
が「最初の空行までを出力する」ということで、メールのファイルからヘッダ部分を
抜き出すのに使えることがわかったのですが、その逆「最初の空行から後を出力
する」のはどうするのがよいでしょうか?
「sed ではなく○○を使え」とかいうことになるのかもしれませんが……

99 :
sed '1,/^$/d'

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
【熱く】お前のEmacsにはまった理由【語れ】 (538)
Lisp@UNIX版 (576)
UNIXerなアニヲタは何に萌えてますか? Part4 (582)
神よ Sambaで・・・ (755)
神よ Sambaで・・・ (755)
神聖モテモテUNIX (304)
--log9.info------------------
【上地】規制難民用104【遊助】 (236)
【韓国語】JYJツイ関連スレ48【訳希望】 (458)
おねだりマスカットSP!お客様相談センター (228)
福山雅治とヲタの悪口スレ (797)
(1990年前半)観月ありさ(10代NO1) (543)
【中山美穂専用】2011年4月期ドラマ予想4 (589)
【TBS】SASUKEを語ろう!29【サスケ】 (245)
スポルト ランナー編★2 (330)
【TBS】SASUKEを語ろう!33【サスケ】 (283)
|ω・`) オットセイ専用避難所 -20- (936)
KBG雑談スレ (343)
( ^ω^)・・・ (461)
ジャンプ打ち切りサバイバルレース年年板21 (251)
(●^〜^)No.0003 (746)
HSJを生温かく見守るスレ (522)
シリアス避難所 (547)
--log55.com------------------
佳子様は綺麗で可愛いなあ
友達が欲しいんだもーん
沖縄は日本固有の領土ではない
40代の運動
____40歳以上で未婚で親と同居してる奴____
Rの作り方
こんなAKB48はイヤだ!ヽ(`Д´)ノ
永井豪や池沢さとしのエロ漫画が好きだった40代