おまいら! sed の使い方教えて下さいm(_ _)mat LINUX
おまいら! sed の使い方教えて下さいm(_ _)m - 暇つぶし2ch80:login:Penguin
05/08/21 09:54:50 PDEd7qsy
>>78
全然試さずに聞いてみるのだがそれってファイル中身じゃなくて
ファイル自体が消えるの?

81:login:Penguin
05/08/22 23:00:28 /oDO6UGR
おれは引数の中身までは分からんが

ls | sed 'hogehoge' | rm -rf

ってことだろ。

82:login:Penguin
05/08/22 23:09:43 /oDO6UGR
あれ?
>カレントパスにある、重複名ファイル
こんなもん作れないだろ・・・作れたらスクリーンショットとってどっかに挙げてくれ。


83:login:Penguin
05/11/06 18:45:52 d1sLJr10
age

84:login:Penguin
05/11/20 11:35:39 zC+iRPbI
つ[MS‐DOSを256倍使うための本〈Vol.3〉]

85:login:Penguin
05/11/21 18:01:23 9OlIZyoL
>>84
「MAKE make Make.」

「640Kのバリヤーのなかで」
の章を読めば良いんですね。
わかりました。
ありがとうございました。

86:login:Penguin
05/11/22 00:22:49 HxwKhGDI
rm -rfv `find . | grep '~$'`

こんなのよくやる。

87:login:Penguin
05/11/26 06:21:39 kJunMMiz
こんなのを適当にファイル名を指定してやってみよう。

   sed 's/\w//g' <ファイル名>

88:login:Penguin
05/11/28 02:00:25 LhHzdh/r
疑問なんだけど、デフォルト入力とかで
行をファイル(標準入力でもいいけど)から読み込んでくるとき、
パターンスペースに格納されるテキストには
その行が本来持っていた末尾の改行は保持されるの、
それとも捨てられてるの?

89:login:Penguin
05/11/28 23:09:25 EcBnAVh1
>>88
捨て

90:88
05/11/29 02:04:37 JFndx1yi
>>89
ありが㌧。そうみたいだね。実は自己解決してました。
man sedしてもわからなかったけどinfo sedしたら書いてあったよ(GNU sedね)。
「SED 教室 第三回」にもこうあった。
URLリンク(www.gcd.org)

> SED は起動されるとまず、標準入力の最初の行をパターンスペースにコピーし
>ます。この時点でパターンスペースの内容は「これは一行目だ。」になります。
>行末の改行コードは捨てられてパターンスペースの中にはありませんので注意し
>てください。

91:login:Penguin
05/11/30 21:51:21 O2ouymZd
Cのソースから
//
/* */
のコメントを取り除けますか?sedで。

92:login:Penguin
05/11/30 22:18:12 lIO05ZaP
>>91
できるよ。

93:login:Penguin
05/11/30 22:43:30 +mlzjm+U
>できるよ。

/*


*/
のように複数行に分かれている場合にもできますか?


94:login:Penguin
05/11/30 22:44:24 lIO05ZaP
>>93
うん。

95:login:Penguin
05/12/03 04:22:17 tqW1lQSk
要するに,「/*」と「*/」を削除すれば?


96:login:Penguin
05/12/03 10:13:01 Tw8V4WMs
ヒント:
URLリンク(www.gcd.org)
---------- SED 教室 第十二回 「~から~まで、基礎編」 ----------

97:login:Penguin
06/01/22 16:17:53 IDyOrogG
SED

98:login:Penguin
06/02/24 16:50:56 cbN1qQJn
@@@

99:login:Penguin
06/03/01 17:51:55 invzz+R5
Super Erectile Dysfunction

100:login:Penguin
06/04/12 02:40:10 TK6X7NqV
深夜挙げ

101:login:Penguin
06/06/19 18:24:21 7hb+n6Th
保守

102:login:Penguin
06/08/22 16:17:23 GMKE0Nda
むむむ

103:login:Penguin
07/04/18 00:02:42 znSq4roi
>>1


104:login:Penguin
07/04/21 20:59:54 3cd3hhH7
sed -e 's/XX/VV/g'|rm -rf
パイプの概念すらしらん奴はこの板すらのぞかない方が君の為だ。

105:login:Penguin
07/04/21 21:05:07 Xv/Wu2nU
とりあえず、何をどうしたいのか、問題をはっきり定義してくれ。
そうすりゃ、見本スクリプト書いて説明してやるよ。
ややこしいことやるなら、ほんとはPerlのほうが使いやすいけど。

106:login:Penguin
07/11/23 23:18:25 jeG9bac3
括弧そのものの削除ってどうやるの・・・
\( ってやっても expression エラーがでるんだけど・・・orz

107:login:Penguin
07/11/24 09:54:12 KS9aoT96
むしろ ( だけでいいはず

108:login:Penguin
07/11/26 16:59:12 BfF24vJW
実装次第かも知れんが、\(~\)がグループ化で()は普通の括弧文字って実装が割と多い気がするね。

109:login:Penguin
07/11/26 18:40:27 K1ODcPAV
BREとEREの違いですね。
GNUのsedなら、-rをつけるとEREになるから、
\(~\)じゃなくて(~)でグループ化になりますよ。

110:login:Penguin
07/11/27 02:16:55 ha+qq+GW
>>108
GNUの拡張を除けば、グループ化が ( と ) なsedはないんじゃないか?


111:login:Penguin
08/04/17 05:57:23 OFfDkpoC
夢翔塾代表 逮捕後アリバイ工作 証人威迫容疑で福岡県警再逮捕 拘置中、男に依頼

特定非営利活動法人(NPO法人)「ハートランド夢翔塾(むしょうじゅく)」(福岡県大牟田市)代表の川野弘樹容疑者(36)=児童福祉法違反の罪で起訴=が、
塾生の少女=当時(16)=にわいせつ行為をしたとされる事件で、同県警は5日、拘置中に知り合った男と事件当日のアリバイ工作をしたとして、
証人威迫の疑いで川野容疑者を再逮捕し、大牟田市草木、飲食店従業員李永浩容疑者(32)を逮捕した。
調べでは、川野容疑者は大牟田署の留置場に拘置された際、別の事件で拘置されて同房だった李容疑者と共謀。
略式起訴で2月1日に保釈された李容疑者は同日夜、大牟田市内の川野容疑者の知人女性を訪ね、
「(わいせつ事件の)犯行時、川野容疑者と一緒にいたと証言してくれ」と、うそのアリバイ証言をするように強要した疑い。
両容疑者に面識はなく、留置場内で謀議していたという。川野容疑者は黙秘し、李容疑者は容疑を認めているという。
県警は5日、川野容疑者が昨年10月8日にも同市内の路上に止めた乗用車内で同じ少女にわいせつ行為をしたとして、
児童福祉法違反(淫行(いんこう))容疑でも再逮捕した。

URLリンク(www.nishinippon.co.jp)


浜松・連続女性暴行:懲役20年を求刑 /静岡

浜松市の連続女性暴行事件で強姦(ごうかん)致傷などの罪に問われた同市中区北寺島町、
韓国籍の会社員、李正遠(イチョンウォン)被告(34)の論告求刑公判が4日、地裁浜松支部 (北村和裁判長)であった。
検察側は懲役20年を求刑した。
毎日新聞
URLリンク(mainichi.jp)


強制わいせつ容疑で逮捕 /福岡

26日、八幡東区石坪町、土木作業員、崔吉竜容疑者(32)を。
今月12日午後6時50分ごろ、門司区内の会社事務所に「トイレを貸してほしい」と
言って立ち入り、事務員の女性(32)に抱きつくなどわいせつな行為をした疑い。
前日にも事務所を訪れており、「強制ではない」などと犯意を否認しているという。

URLリンク(mainichi.jp)

112:login:Penguin
08/04/18 01:44:25 /C9YMQcQ
unix 板のアレがこっちに来たのかと思った。

113:login:Penguin
08/06/03 06:01:17 OIB6+9BR
>>110
できるよ。
以上。
はい、次。

114:login:Penguin
08/07/17 19:01:07 fSKuDDXe
head.logというファイルの先頭に「HOGEHOGE」という文字列を挿入しようとしています。

head.logの中身は
-------
test
test
-------
という二段の文字列です。
最初に直接sedを用いて

sed -e '1 s/^/HOGEHOGE\n/' head.log

というコマンドで
-------
HOGEHOGE
test
test
-------
と表示することには成功しました。

115:login:Penguin
08/07/17 19:02:47 fSKuDDXe
ただ、シェルスクリプトを
----------------------------
#!/bin/sh

echo "input word"
read word
sed -e "1 s/^/${word}\n/" head.log
----------------------------
のように書いて、wordにHOGEHOGEを代入してこれを実行すると

-------
HOGEHOGE
HOGEHOGE
test
test
-------
のように、HOGEHOGEが二回繰り返して表示されてしまいました。
この原因は何なのでしょうか?
対策方法などありましたらアドバイスよろしくおねがいします。

116:login:Penguin
08/07/17 20:43:30 KzL7zakf
>>115
まず関係ないと思われる部分を省いて少しずつ試しなよ。



117:login:Penguin
08/07/17 20:49:48 KzL7zakf
ヒント
----------------------------
#!/bin/sh

echo "input word"
read word
echo ""
sed -e "1 s/^/${word}\n/" head.log
----------------------------

118:login:Penguin
08/07/17 21:07:52 fSKuDDXe
うわああああ!!
恥ずかしいです(><)

ありがとうございました(;_;)

119:login:Penguin
08/08/01 22:50:22 WR526y3P
改行の扱いについて教えてください。

以下のページによると
URLリンク(www.gcd.org)

> では「ジャンプせよ」という命令を実行することなくスクリプトの最後の行を
> 過ぎてしまったらどうなるのでしょうか。(中略)この様な場合、SED は p と d を
> 自動的に実行します。

とありますが、
echo -n aaa | sed -e 's/aaa/bbb/'
を実行すると
bbb
が改行を伴わずに出力されます。

上記の説明と異なる結果でよく分からないのですが、、、
パターンスペースに各行の文字列を入れる際、行末の改行は捨てられるが、
その行が改行を伴っていたか伴っていなかったかについて、sedは何らかの形で
記憶している、そしてデフォルトの出力の際、もともと改行を伴っていたか
どうかによって、出力文字列に改行を付けている。
このような理解でよろしいでしょうか。

よろしくお願いします。

120:login:Penguin
08/08/02 00:47:41 +VO1N7E+
age

121:login:Penguin
08/08/03 00:52:44 VOatfWTi
>>119

GNU sed のソースを見た限りでは、一行ごとに読み込んでいるのだけど
改行がついていたかどうかのフラグを持ってるね。
んで、入力に改行がなかった場合には出力にも付加しない。

POSIX的にはどうか知らないけど 119にある理解でいいんじゃないか?


122:119
08/08/03 21:20:32 S34ZH5Ab
>>121
デフォルトの出力に関しては、最終行での改行の有無を意識しておけばよい
ということですかね。
調べていただいてありがとうございました。

123:121
08/08/04 02:43:40 GBDGU4jb
>>122

sedはawkとかPerlみたいにレコードの区切りを変えることができなくて一行単位というのは
動かないから、改行コードのあるなしが問題になるのは最終行だけだね。

ソースをちょっと grep してちょっと眺めただけだからたいした手間じゃないよ。



124:login:Penguin
08/08/05 20:51:25 X/szKwVr
grepの場合、改行がない最終行に対しては、改行を付けて出力するね。

125:login:Penguin
08/10/27 23:21:57 BnAQXfRx
"aaa"
"bbb
ccc"

このようなファイルの2行目と3行目を連結したいのですが、可能でしょうか。

126:login:Penguin
08/10/28 00:00:22 LqvgIl+t
>>125
詳しい条件書かないとわからんよ。

s/b\n/b/g

その例には使えるけど。

127:login:Penguin
08/10/28 00:04:49 gCa9/U26
ありがとうございます。
この例で使えれば大丈夫なのですが、
条件として\nは使えるのでしょうか。

128:login:Penguin
08/10/28 01:07:16 LqvgIl+t
>>127
質問の意図がわからないのだが。


129:login:Penguin
08/10/28 01:08:53 dGaeCgPM
>>127
「自分の環境では、\nが認識されませんでした。」か?

130:login:Penguin
08/10/28 01:24:35 LqvgIl+t
>>127
ああ、すまん。確かにダメだわ。sedじゃないけど、

perl -pe "s/b\n/b/g" ファイル名

これで勘弁。

131:login:Penguin
08/10/28 03:01:43 /qenFkSI
/bbb$/{
N
s/\n//
}

でどう?

マッチ文字列や置換文字列に \n が使えるかどうかは環境によるので
お前さんがどういうところで使っているかを書かなければ答えようがない。


132:login:Penguin
08/11/09 22:38:03 iboFIZ94
>「Error」がある行に,「### Check Line ###」という新しい行を追加する
>$ $ sed -e "/Error/i #### Check Line ###" source.txt

↑の構文なのですが、「新しい行を追加する」のではなく、
行の入れ替えを行う方法は無いでしょうか?


133:login:Penguin
08/11/10 02:48:47 oBt1rply
>>132
入れ替えって何と何を入れ替えるの?
#### の行を先に出力したいってこと?


134:login:Penguin
08/11/10 05:23:57 Vv2a12Zc
>>133
例えば、以下のようなテキストがあった場合
111
222
Error 333
444
555

「Error」がある行に,「### Check Line ###」という行に入れ替えたいです。
以下のようなイメージです。
111
222
### Check Line ###
444
555



135:login:Penguin
08/11/10 05:33:29 e8TF6STv
iじゃなくてc使う

136:login:Penguin
08/11/11 21:48:17 DQj2Ej4A
>>135
遅くなりましたが有難うございました!

137:login:Penguin
08/11/15 16:52:59 FFNCNb8R
ナイスなスレだな

138:login:Penguin
08/12/02 10:28:40 2vyuRZ6k
なぜawkを使わない?


139:login:Penguin
08/12/03 01:46:50 O9/K8qme
下記のtest.datから、
[1が出現してから3が出現するまでの行]はアドレス範囲を使えば簡単に取得できますが
$ sed -n -e '/^1/,/^3/p' test.dat
[1が出現してから3が出現する前の行]を取得するにはどうやるのでしょうか?
$ sed -n -e '/^1/,/^3/p' test.dat | sed -e '$d'
でもいいのですが、1回のsedで済ますにはどうすればよいでしょう?

$ cat >test.dat
0
1
2
3
4
5
^D


140:login:Penguin
08/12/03 02:53:15 1xcvKxcT
>>139

 sed -ne '/1/,/3/{/3/q; p'



141:139
08/12/03 08:40:11 O9/K8qme
>>140
こういう時にqを使うんだ。
物凄く恥ずかしながら、目から鱗状態です。
2週間の間、何度も思い出しては考えても分からなかったので質問してみた。
ありがとう。

142: [―{}@{}@{}-] login:Penguin
09/04/08 08:59:15 DR9diDX0
URLリンク(unkar.jp)
m(_ _)m

143: [―{}@{}@{}-] login:Penguin
09/04/08 09:00:09 DR9diDX0
URLリンク(unkar.jp)

144: [―{}@{}@{}-] login:Penguin
09/04/08 09:01:33 DR9diDX0
URLリンク(unkar.jp)

145: [―{}@{}@{}-] login:Penguin
09/04/08 09:04:26 DR9diDX0
URLリンク(www.23ch.info)

146: [―{}@{}@{}-] login:Penguin
09/04/08 09:08:12 DR9diDX0
URLリンク(www.23ch.info)

147:login:Penguin
10/06/01 16:15:16 8+L/+i95
i=`echo $i|sed -e 's/^\([^ ]*\)\/$/\1/p' -e d`

スクリプト中のこの1文の意味が良く分かりません。
どういう処理をしているのか教えていただけないでしょうか。

148:login:Penguin
10/06/01 23:50:47 AqF3qhLQ
>>147
スレリンク(linux板:109番)


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch