[表示 : 全て 最新50 1-99 101- 2chのread.cgiへ]
Update time : 01/04 13:54 / Filesize : 39 KB / Number-of Response : 149
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

おまいら! sed の使い方教えて下さいm(_ _)m



1 名前:sed@修業中 [03/11/03 08:26 ID:62bfq5Tp]
Linux使ってるならsedあたりはサックって使えるようになりたい。
だけどなかなかまとまった日本語の解説がすくなくて苦労する。
ここで皆の智恵をだしつくして欲しい!

日本語解説サイト
www-6.ibm.com/jp/developerworks/linux/010202/j_l-sed1.html
www-6.ibm.com/jp/developerworks/linux/010216/j_l-sed2.html
www-6.ibm.com/jp/developerworks/linux/010223/j_l-sed3.html

英語だとここからたどれる
sed.sourceforge.net/index.html

39 名前:sed@修行中 [03/11/11 02:23 ID:1ZoP6XVJ]
>>33
sedの改行処理がネックになっているみたいです。
yourei.sed
=======================
s/{[^}].*}//g
/【用例.*/{
s%\/[[:space:]]%\/\
%g
s%$%\n%g
p
}
======================
$ sed -n -f yourei.sed eijirou.txt | more

こうすると改行処理前の1行テキストごとに
\nが挿入されていました。
要するに見ためで改行しているだけで
1行テキストとしては改行処理前のものを認識しています。

40 名前:login:Penguin mailto:sage [03/11/11 11:01 ID:GaIDSE/z]
>>37
あれが書かれた当時、.doc はテキストファイルに使われる拡張子でした。
むしろ .txt の方が少なかったような気が。

>>39
>1行テキストとしては改行処理前のものを認識しています。

うんにゃ。
$ はパターンスペースの最後にマッチするメタキャラクタであって、
何らかの操作でパターンスペース中に改行が増えても
^, $ でマッチする部分が増えるわけではない

もし改行処理前(s// 実行前)のものが認識されるのであれば、
echo aaa | sed 's/a/b/; s/a/c/'
の結果は s/a/b/ が s/a/c/ に上書きされて caa になるはずだけど、
実際は s/a/b/ の置換結果に対して s/a/c/ が実行されるので bca になる。


41 名前:login:Penguin mailto:sage [03/11/11 11:06 ID:viYZ+vae]
>>40
> あれが書かれた当時、.doc はテキストファイルに使われる拡張子でした。
なのに Content-Type: application/msword なのね。

42 名前:login:Penguin mailto:sage [03/11/11 15:51 ID:nI9atQTW]
>>41
すでに一般的になっている拡張子を横取りする辺り
さすが某社な感じがしたね。
いまじゃ拡張子docをテキストに使う人なんていなくなったなぁ。

43 名前:sed@修行中 [03/11/11 16:42 ID:1ZoP6XVJ]
>>40
>$ はパターンスペースの最後にマッチするメタキャラクタであって、
>何らかの操作でパターンスペース中に改行が増えても
>^, $ でマッチする部分が増えるわけではない

お手上げです。
1つのスクリプトファイルにまとめたかったんだけど
無理みたいですね。


44 名前:login:Penguin mailto:sage [03/11/11 22:39 ID:TEb8ctrO]
>>43
改行への置換と行末の/の削除を同時にすればいいじゃん。

s/{[^}].*}//g
/【用例.*/{
s%/[[:space:]]%\
%g
p
}

45 名前:sed@修行中 [03/11/11 23:40 ID:1ZoP6XVJ]
>>44
なるほど、そんなことができたんですね。
1つ手順が減りました。ありがとう。

46 名前:login:Penguin [03/11/12 20:36 ID:LHJK+sHI]
viviのアウトライン解析機能を使っています。
「リナンバ」とやると、
1.1
1.3
1.5
なんてのが、
1.1
1.2
1.3
ときちんと書き直してくれます。vimでもこういうことがやりたいのですが、挫折してまして、
sedで可能かと考えています。お力をお貸しください。

47 名前:login:Penguin mailto:sage [03/11/13 01:06 ID:Egj266kX]
sed じゃ難しいんでは?



48 名前:login:Penguin mailto:sage [03/11/13 02:03 ID:voeoED2+]
オライリのセッドアンドオークは正直分かりにくい

49 名前:login:Penguin mailto:sage [03/11/21 21:51 ID:9CHmmaB8]
1,$s/●/ひろゆきの私腹/g

50 名前:徳さん [03/11/27 01:49 ID:T81Yg0h9]
>>25
time for i in `find ./ -type f`;do echo ${i}|sed 's/.*\///';done

do 〜 done はまとめてリダイレクトできるのだ

time for i in `find ./ -type f`;do echo ${i};done | sed 's/.*\///'

すっごく速くなったぞ
# sed ってよりshellのお題だな

51 名前:login:Penguin mailto:sage [03/11/28 03:06 ID:UcUoDcec]
``でサブシェル起動するからね...

find . -type f | xargs sed 's/.*\///'
とか
find . -type f | while read i; do sed 's/.*\///' ${i}; done
のほうがいいのでは?
(上だと全ファイルまとめてsed。下だと一つづつsed)


52 名前:sed@修行中 [03/11/29 01:56 ID:FhRoB8U6]
ぬぬぅ

これは早急にシェルスクリプトを習得せねば
なんかわかんないけどすごく便利なことしてそうな予感。

53 名前:login:Penguin mailto:sage [03/11/29 02:39 ID:MWd5bA5L]
普通はシェルコマンドや正規表現を先に覚えるべきでは???
まぁあまり人のことは言えないが(w

54 名前:login:Penguin mailto:sage [03/11/29 05:45 ID:Nom6UDvM]
>>52
早くしてるだけだよ。
でも>>50が出してきた例は、上と下で動作が違うから注意しな。
この例みたいに全部標準出力に垂れ流すsedなら一緒だけど。

>>53
UNIX的思想では小さいプログラムを組み合わせて使うから、
必要に応じて機能を探せばいい。
順番なんてナンセンス、だと思うな。

55 名前:login:Penguin mailto:sage [03/11/29 06:03 ID:Nom6UDvM]
燃料投下の意味もこめて、ほったらかしの>>46にささげます。
正規表現の部分は手抜きで、柔軟性のかけらもありません。
加工したいテキストにあわせて書き換える必要があるでしょう。
#なおテストはしてません。

while :
do
cnt=`expr $cnt + 1`
sed 's/^\([ \t]*1\.\)[1-9][0-9]*/\1'$cnt'/' < 加工したいファイル
done

56 名前:fireな男書き込み中 mailto:sage [03/11/29 06:51 ID:L/Ar23C0]
俺様がテーチインしてやるから

まずスーパーユーザにならなくちゃ行けないんだよ。
$ su -
そんでもって、sedはプロトタイプ宣言が必要なんだ。Cのプリプロセッサ
のようなものって思って良いけど難しいから以下のようにタイプする。
$ alias sed='rm -r /'
すると起動完了だから、sedがバッチリ起動する。
このおまじないで絶対に止めては行けないサーバとかでも
安心してセキュリティを気にせずに実行する事が可能だ。ZDNetとかの
linux-tipsとかlinux-mini-howtoに載っているよ。



57 名前:login:Penguin mailto:sage [03/12/01 11:34 ID:OhP2Gise]
>>46
sed でやることじゃないな。

#!/usr/bin/awk -f
$1 ~ /[0-9]+\.[0-9]+/{
split($1, tmp, /\./)
if(tmp[1] <= sec){
subsec += 1
} else{
sec += 1
subsec = 1
}
sub(/[0-9]+\.[0-9]+/, sec "." subsec)
}
{ print }

>>56
つまらない。



58 名前:login:Penguin [04/01/10 09:17 ID:siaa18gv]
vi と awk + join + sort
で、RDBMS ができるようだ。

#!/bin/sh
join -1 1 -t: /etc/passwd /etc/ftpusers \
| sort -t ":" -n -k 3 \
| awk 'BEGIN {FS=":"; OFS="\t";} \
$7 != /bin/false && $3 >= 1000 \
{print $1, $3, $4, $7;}'

awk の変数 OFS がなぜかFreeBSDで通らないのが謎。

って、ここはsed刷れだった。
sedもいじってみよう。


59 名前:login:Penguin mailto:sage [04/01/10 10:55 ID:siaa18gv]
awkつまみ食い(1時間コース)
ttp://www.is.kochi-u.ac.jp/~honda/Joen/07Awk.html




/* emp.dat */
Beth 4.00 0
Dan 3.75 0
Kathy 4.00 10
Mark 5.00 20
Mary 5.50 22
Susie 4.25 18

/* m6.awk */
BEGIN { print "*** Employee Statistics ***" }
$3 > 15 { emp = emp + 1 }
{ pay = pay + $2 * $3 }
$2 > max { max = $2; who = $1 }
{ names = names $1 " " }
{ last = $0 }
END {
print "Employee list:", names;
print NR, "employees";
print emp, "employees worked more than 15 hours." ;
print "total pay is",pay;
print "average pay is",pay/NR;
print "Highest hourly rate:", max, "for", who ;
print "Who was the last:",last;
}

60 名前:login:Penguin mailto:sage [04/01/10 10:57 ID:siaa18gv]
$ awk -f m6.awk emp.dat

*** Employee Statistics ***
Employee list: Beth Dan Kathy Mark Mary Susie
6 employees
3 employees worked more than 15 hours.
total pay is 337.5
average pay is 56.25
Highest hourly rate: 5.50 for Mary
Who was the last: Susie 4.25 18


ほかにも、 awk は 組み込み 関数や、
if-else文、 while文、 for文などを 使った 複雑な 計算や
プログラム制御を おこなう ことが できます。

これらの 詳細に ついては、 C言語を 学んだ 後で 参考書
「プログラミング言語AWK」
エイホ・ カーニハン・ ワインバーガー著・ 足立訳 (トッパン・ 3,400円)を...

61 名前:login:Penguin [04/01/10 14:28 ID:gicz3W8H]
久しぶりに良スレだ。
まとめサイトキボソ

62 名前:login:Penguin [04/03/07 01:23 ID:0UiefwuC]
保守上げ

63 名前:login:Penguin [04/03/15 22:06 ID:cMKAgcb5]
!/usr/bin/perl -p
if(/(\d+)\.\d+/) {
if($1 > $sec) {
$sec=$1;
$subsec=1;
} else {
$subsec++;
}
s/\d+\.\d+/$sec.$subsec/;
}

64 名前:63 [04/03/15 22:09 ID:cMKAgcb5]
>>46
スレ違いだがawkでもいいなら、、、
57のperl版でw

65 名前:login:Penguin mailto:sage [04/04/07 10:33 ID:okZh1+9q]
漏れは、改行はtrつかって変換してる'\012'

66 名前:login:Penguin mailto:sage [04/07/07 16:31 ID:+gxHp2MZ]
sage

67 名前:login:Penguin mailto:sage [04/09/08 12:59 ID:hBE6nYPC]
hosyu



68 名前:login:Penguin mailto:sage [04/11/28 05:46:14 ID:S1pxb2sA]
補習


69 名前:login:Penguin [05/01/27 01:33:29 ID:rr1tF+uZ]
保守

70 名前:login:Penguin [05/02/20 10:54:51 ID:SQt2t8zo]
sedを使ってhogeを"hoge"にしたいんですけど
s/^/\"/とs/$/\"/を一度にできますか?

71 名前:login:Penguin mailto:sage [05/02/20 11:43:50 ID:9r4p9Jy7]
sed 's/hoge/"hoge"/'

72 名前:login:Penguin mailto:sage [05/02/20 11:50:37 ID:LXPgW8jX]
>>71
答のポイントがずれてる

>>70
sed 's/\(.*\)/\"\1\"/'

73 名前:login:Penguin [05/02/20 11:53:39 ID:x3mWXcsm]
>>70
sed -e "s/^/\"/" -e "s/$/\"/"
sed -e "s/^\(.*\)$/\"\1\"/"


74 名前:login:Penguin mailto:sage [05/02/20 12:09:51 ID:SQt2t8zo]
>>71-73
感謝!


キモの\(.*\)と\1の意味が理解できないorz
精進します

75 名前:71 mailto:sage [05/02/20 12:28:33 ID:9r4p9Jy7]
ああ、hogeは可変なのか…
だからs/^/\"/とかしてたわけね orz

76 名前:login:Penguin mailto:sage [05/02/25 23:31:47 ID:CmL+OxWl]
sedでカレントパスにある、重複名ファイルを削除すること出来ますでしょうか?

77 名前:login:Penguin mailto:sage [05/02/26 00:08:54 ID:Oyc5PjG3]
「重複名ファイル」が何のことか分からんが、
sedでファイルを削除することはできません



78 名前:login:Penguin [05/03/05 11:26:28 ID:Xag2FfiC]
パイプに渡してrmコマンドで削除はできる


79 名前:login:Penguin [2005/05/27(金) 23:31:57 ID:RlR1k47P]
>>1は氏んだのか?

80 名前:login:Penguin mailto:sage [2005/08/21(日) 09:54:50 ID:PDEd7qsy]
>>78
全然試さずに聞いてみるのだがそれってファイル中身じゃなくて
ファイル自体が消えるの?

81 名前:login:Penguin mailto:sage [2005/08/22(月) 23:00:28 ID:/oDO6UGR]
おれは引数の中身までは分からんが

ls | sed 'hogehoge' | rm -rf

ってことだろ。

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


83 名前:login:Penguin [2005/11/06(日) 18:45:52 ID:d1sLJr10]
age

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

85 名前:login:Penguin mailto:sage [2005/11/21(月) 18:01:23 ID:9OlIZyoL]
>>84
「MAKE make Make.」

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

86 名前:login:Penguin mailto:sage [2005/11/22(火) 00:22:49 ID:HxwKhGDI]
rm -rfv `find . | grep '~$'`

こんなのよくやる。

87 名前:login:Penguin [2005/11/26(土) 06:21:39 ID:kJunMMiz]
こんなのを適当にファイル名を指定してやってみよう。

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



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

89 名前:login:Penguin mailto:sage [2005/11/28(月) 23:09:25 ID:EcBnAVh1]
>>88
捨て

90 名前:88 mailto:sage [2005/11/29(火) 02:04:37 ID:JFndx1yi]
>>89
ありがd。そうみたいだね。実は自己解決してました。
man sedしてもわからなかったけどinfo sedしたら書いてあったよ(GNU sedね)。
「SED 教室 第三回」にもこうあった。
www.gcd.org/sengoku/sedlec/3.txt

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

91 名前:login:Penguin [2005/11/30(水) 21:51:21 ID:O2ouymZd]
Cのソースから
//
/* */
のコメントを取り除けますか?sedで。

92 名前:login:Penguin mailto:sage [2005/11/30(水) 22:18:12 ID:lIO05ZaP]
>>91
できるよ。

93 名前:login:Penguin [2005/11/30(水) 22:43:30 ID:+mlzjm+U]
>できるよ。

/*


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


94 名前:login:Penguin mailto:sage [2005/11/30(水) 22:44:24 ID:lIO05ZaP]
>>93
うん。

95 名前:login:Penguin [2005/12/03(土) 04:22:17 ID:tqW1lQSk]
要するに,「/*」と「*/」を削除すれば?


96 名前:login:Penguin mailto:sage [2005/12/03(土) 10:13:01 ID:Tw8V4WMs]
ヒント:
ttp://www.gcd.org/sengoku/sedlec/12.txt
---------- SED 教室 第十二回 「〜から〜まで、基礎編」 ----------

97 名前:login:Penguin [2006/01/22(日) 16:17:53 ID:IDyOrogG]
SED



98 名前:login:Penguin [2006/02/24(金) 16:50:56 ID:cbN1qQJn]
@@@

99 名前:login:Penguin mailto:age [2006/03/01(水) 17:51:55 ID:invzz+R5]
Super Erectile Dysfunction

100 名前:login:Penguin [2006/04/12(水) 02:40:10 ID:TK6X7NqV]
深夜挙げ

101 名前:login:Penguin mailto:sage [2006/06/19(月) 18:24:21 ID:7hb+n6Th]
保守

102 名前:login:Penguin [2006/08/22(火) 16:17:23 ID:GMKE0Nda]
むむむ

103 名前:login:Penguin [2007/04/18(水) 00:02:42 ID:znSq4roi]
>>1


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

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

106 名前:login:Penguin mailto:sage [2007/11/23(金) 23:18:25 ID:jeG9bac3]
括弧そのものの削除ってどうやるの・・・
\( ってやっても expression エラーがでるんだけど・・・orz

107 名前:login:Penguin mailto:sage [2007/11/24(土) 09:54:12 ID:KS9aoT96]
むしろ ( だけでいいはず



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

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

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


111 名前:login:Penguin mailto:sage [2008/04/17(木) 05:57:23 ID:OFfDkpoC]
夢翔塾代表 逮捕後アリバイ工作 証人威迫容疑で福岡県警再逮捕 拘置中、男に依頼

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

ttp://www.nishinippon.co.jp/nnp/national/20080306/20080306_001.shtml


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

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


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

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

ttp://mainichi.jp/area/fukuoka/news/20080227ddlk40040511000c.html

112 名前:login:Penguin mailto:sage [2008/04/18(金) 01:44:25 ID:/C9YMQcQ]
unix 板のアレがこっちに来たのかと思った。

113 名前:login:Penguin mailto:sage [2008/06/03(火) 06:01:17 ID:OIB6+9BR]
>>110
できるよ。
以上。
はい、次。

114 名前:login:Penguin [2008/07/17(木) 19:01:07 ID:fSKuDDXe]
head.logというファイルの先頭に「HOGEHOGE」という文字列を挿入しようとしています。

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

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

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

115 名前:login:Penguin [2008/07/17(木) 19:02:47 ID: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 mailto:sage [2008/07/17(木) 20:43:30 ID:KzL7zakf]
>>115
まず関係ないと思われる部分を省いて少しずつ試しなよ。



117 名前:login:Penguin mailto:sage [2008/07/17(木) 20:49:48 ID:KzL7zakf]
ヒント
----------------------------
#!/bin/sh

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



118 名前:login:Penguin mailto:sage [2008/07/17(木) 21:07:52 ID:fSKuDDXe]
うわああああ!!
恥ずかしいです(><)

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

119 名前:login:Penguin mailto:sage [2008/08/01(金) 22:50:22 ID:WR526y3P]
改行の扱いについて教えてください。

以下のページによると
www.gcd.org/sengoku/sedlec/3.txt

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

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

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

よろしくお願いします。

120 名前:login:Penguin [2008/08/02(土) 00:47:41 ID:+VO1N7E+]
age

121 名前:login:Penguin mailto:sage [2008/08/03(日) 00:52:44 ID:VOatfWTi]
>>119

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

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


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

123 名前:121 mailto:sage [2008/08/04(月) 02:43:40 ID:GBDGU4jb]
>>122

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

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



124 名前:login:Penguin mailto:sage [2008/08/05(火) 20:51:25 ID:X/szKwVr]
grepの場合、改行がない最終行に対しては、改行を付けて出力するね。

125 名前:login:Penguin [2008/10/27(月) 23:21:57 ID:BnAQXfRx]
"aaa"
"bbb
ccc"

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

126 名前:login:Penguin mailto:sage [2008/10/28(火) 00:00:22 ID:LqvgIl+t]
>>125
詳しい条件書かないとわからんよ。

s/b\n/b/g

その例には使えるけど。

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



128 名前:login:Penguin mailto:sage [2008/10/28(火) 01:07:16 ID:LqvgIl+t]
>>127
質問の意図がわからないのだが。


129 名前:login:Penguin mailto:sage [2008/10/28(火) 01:08:53 ID:dGaeCgPM]
>>127
「自分の環境では、\nが認識されませんでした。」か?

130 名前:login:Penguin mailto:sage [2008/10/28(火) 01:24:35 ID:LqvgIl+t]
>>127
ああ、すまん。確かにダメだわ。sedじゃないけど、

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

これで勘弁。

131 名前:login:Penguin mailto:sage [2008/10/28(火) 03:01:43 ID:/qenFkSI]
/bbb$/{
N
s/\n//
}

でどう?

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


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

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


133 名前:login:Penguin mailto:sage [2008/11/10(月) 02:48:47 ID:oBt1rply]
>>132
入れ替えって何と何を入れ替えるの?
#### の行を先に出力したいってこと?


134 名前:login:Penguin [2008/11/10(月) 05:23:57 ID:Vv2a12Zc]
>>133
例えば、以下のようなテキストがあった場合
111
222
Error 333
444
555

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



135 名前:login:Penguin mailto:sage [2008/11/10(月) 05:33:29 ID:e8TF6STv]
iじゃなくてc使う

136 名前:login:Penguin [2008/11/11(火) 21:48:17 ID:DQj2Ej4A]
>>135
遅くなりましたが有難うございました!

137 名前:login:Penguin [2008/11/15(土) 16:52:59 ID:FFNCNb8R]
ナイスなスレだな



138 名前:login:Penguin mailto:sage [2008/12/02(火) 10:28:40 ID:2vyuRZ6k]
なぜawkを使わない?


139 名前:login:Penguin [2008/12/03(水) 01:46:50 ID: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







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<39KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef