- 1 名前:名無しさん@お腹いっぱい。 [2008/02/11(月) 19:21:07 ]
- シェルスクリプトの総合スレです。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。 まずは注意点、リンク、地鎮祭など(>>1-6くらい)をご覧ください。 □お約束 ・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。 Linuxユーザは/bin/shの正体がbashなので特に注意。 ・csh/tcshのシェルスクリプトは推奨されません。 (理由は「csh-whynot」でググれ) ・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。 manや参考リンクを見ましょう。 aproposないしはman -kでそれらしい単語による簡単な検索もできます。 ・シェルスクリプトのことをシェルってゆーな ・シェルで使えるワイルドカード等は正規表現ではありません。 正規表現の話題はスレ違い(正規表現スレへ) □初心者へのアドバイス: ・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも RubyやPerlの方が適した仕事には素直にそちらを使いましょう。 ・知らないコマンドが出てきたらmanを引きましょう。 ・思い通りに動かないときは、まずは sh -x でトレースしましょう。 前スレ シェルスクリプト総合 その9 pc11.2ch.net/test/read.cgi/unix/1187130302/
- 153 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 08:22:29 ]
- 正直、AT&Tの純正/bin/shが使える環境の方が特殊。
原理主義者は別スレ立ててそこでやってくれ。 そこで永遠に添削してれば良かろう。 つ 【純正/bin/shが】シェルスクリプト【唯一の正当なsh】
- 154 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 08:46:54 ]
- いやだから、Solarisの/bin/shが現存するんだって。Solarisももう特殊なのか?
- 155 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 09:13:02 ]
- 特殊な部類と言われてもそれほど驚かないけど。
/bin/shをposix shに置き換えていないのはまだ生きているものの中ではsolarisぐらい?
- 156 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 09:48:19 ]
- 使用シェルを明示すればいいだけのような気がする。
それでも差異を知っておくのは別に悪いことじゃないと思うんだけど、 特定のOSしか相手にしない連中ならそれでもいいか。
- 157 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 09:58:02 ]
- つまり純正shとかいってたのは、Solarisで動かないのは認めねーってのがホンネかw
- 158 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 10:20:04 ]
- Solarisなんて現場ではもうほとんど使われてないだろ。
使われているのは昔のマシンで、移行が面倒だからそのまま動いてるだけのもの。 そういうマシンは保守のみで、新規にスクリプトを書くことはないので、 結局Solaris用のスクリプトなんてもう書くことはない。
- 159 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 10:25:19 ]
- 自分の場合、Solarisに限らず古めの商用UNIXをお守りすることがある。
入れ替えろつってもムリな環境ってのはあるから。装置の一部になってるとか。 OSのアップグレードすらムリだったり。 若い連中には/bin/shと書いておきながらbash前提のスクリプト書くやつが いたりするんだが、犬以外の作業ではまっていたりする。 そんなやつは知識が足りてないから、なかなか解決できないのが笑えるよ。
- 160 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 10:25:56 ]
- >>158
自分の知ってる世界がすべてだと思わない方がいいよ。
- 161 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 10:50:13 ]
- Bourne shを前提にすればSolarisのshすら拡張されている。
- 162 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 10:51:15 ]
- >>160
こういうふうに、反論する(反例を示す)わけでもなく、 一般論だけ言って本人は反論したつもりになってるのって間違ってるよな。
- 163 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 10:57:52 ]
- >>161
じゃあ、Solarisの/bin/shで使えて、Bourne shでは使えない例を1つ以上挙げて。 あらかじめ言っとくけど、あくまでシェルスクリプトとしてね。 インタラクティブモードでの拡張は別。(set -mでjob controlが使えるようになるとか)
- 164 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 11:16:01 ]
- ^ がパイプとして動くshはまだどっかにある?
- 165 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 11:23:50 ]
- >>163
関数。
- 166 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 11:28:01 ]
- オリジナルBourne shellって一体どのバージョンのこと指しているの?
POSIXなら仕様のversionでどれかはっきりするけども。 オリジナルBourne shellって言っても、どれか特定すら出来ないでしょ。 後から行われたバグフィックスは含むのか含まないのか。
- 167 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 11:39:06 ]
- >>164
Solarisの/bin/sh は ^ がパイプとして機能する。Bourne sh踏襲のため。
- 168 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 11:58:56 ]
- 反例ないようだし、実質 Solaris /bin/sh基準でいいんじゃね?
- 169 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 12:04:57 ]
- 可哀想に、耄碌して目も見えなくなったのか……
- 170 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 12:07:54 ]
- 基準なんているか?
質問者の環境で動けばいいじゃん。
- 171 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 12:17:05 ]
- そういうことにしてしまうとbashを排除する口実がなくなる。
- 172 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 12:38:31 ]
- 実質POSIX sh基準でよさそうだな。SUSv3と一体化したし。
- 173 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 12:40:50 ]
- だから、それじゃSolarisで動かないとあれほど、、
- 174 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 12:43:10 ]
- Solaris爺様には必要なときにSolarisではどうするかと質問してもらうということでいいんじゃない。
- 175 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 12:44:44 ]
- Solarisはkshがあるから、POSIXのコード渡されても問題ないでしょ。
- 176 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 12:44:57 ]
- POSIX信者もbashと同様にウザイことに最近気がついた。
- 177 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 12:46:14 ]
- Bourne shell原理主義者もな。
- 178 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 12:47:28 ]
- 学生のときSolarisにお世話になった俺は心情的にはSolaris使える人を維持できるよう
このスレも気を配った方がいいとは思うのだが、昨日からの流れ見てると 到底このスレのSolaris使いを擁護する気にはなれないwww もうPOSIX shスレでいーよ。
- 179 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 12:53:45 ]
- せっかくだからPOSIXと由緒正しいBourne shellの違いを上げてみる?
[[ 新test式 ]] $(( 算術式 )) 引数がない場合の"$@"問題
- 180 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 13:00:43 ]
- そもそもtestがbuiltinだ、ボケ
- 181 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 13:01:17 ]
- そもそもtestがbuiltinじゃないだ、ボケ
- 182 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 13:01:43 ]
- 建設的な話のもっていきかただとは思うが、まず
> 由緒正しいBourne shell とやらを特定しようぜ。できればSolaris以外のソースで頼むわ。 Solarisのshをもってきてこれが純正だっつーならバージョンも明記でな。 いまのところ、Version 7のshがそれということになりかねない。
- 183 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 13:04:09 ]
- なりつつある、の方が適当だったか。
- 184 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 13:11:16 ]
- 人は皆、理想のシェルを追い続ける旅人のようなものさ。
- 185 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 13:18:46 ]
- $( コマンド ) < POSIX
- 186 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 13:30:45 ]
- >>184
理想でいえば、rc はなかなかいいよ(単なるまぜっかえし)
- 187 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 13:35:48 ]
- 仮にPOSIXで桶にしてしまうと、
print hoge (printfじゃないよ、読み間違えるなよ) なんてのも桶になってしまう。 POSIX的にはechoは非推奨で、printに書き換えなきゃならないからな。 で、*BSDユーザーからは printなんてコマンドねーよ、って話になる。
- 188 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 13:42:10 ]
- >>187
はつみみなのでソースよろ。
- 189 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 13:56:56 ]
- echoはプラットフォームごとに違いが大きいからなあ。
- 190 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 14:10:08 ]
- Solarisに至っては内蔵コマンドなのにPATHによって挙動が変化するしね
- 191 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 16:36:46 ]
- POSIXにprintコマンドなどない。
POSIXについてすら>>187のように妄想を語り出す奴がいるようでは 仕様を特定できないBourne shでは到底基準にならないな。
- 192 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 16:51:06 ]
- とりあえず、間を取ってkshぐらいで動けばまぁ文句も出にくいかと。
- 193 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 17:39:04 ]
- >>191
xpg4ってPOSIXじゃないの?
- 194 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 17:48:55 ]
- Unix95とかUnix2003(OSXのあれ)とかと同類。
はっきりいって一番どうでもいい規格w
- 195 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 21:06:07 ]
- 仕様を手に入れやすいというメリットはあるね。
- 196 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 22:50:06 ]
- >>193
違うよ。
- 197 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 23:36:16 ]
- >>190
> Solarisに至っては内蔵コマンドなのにPATHによって挙動が変化するしね マジ? ちょっと信じられないんだけど。
- 198 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 23:39:35 ]
- >>179
> せっかくだからPOSIXと由緒正しいBourne shellの違いを上げてみる? 関数が内部コマンドより優先 > POSIX # [[ test式 ]] ってPOSIXだったかなあ…
- 199 名前:名無しさん@お腹いっぱい。 [2008/03/08(土) 01:38:57 ]
- >>163
${parameter##word} ${parameter#word} ${parameter%%word} ${parameter%word}
- 200 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/08(土) 07:55:45 ]
- >>199
それはSolarisの/bin/sh でも使えない。よって例にならない。
- 201 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/08(土) 08:21:28 ]
- POSIXだからといって [[ ]] を使ったりすると
*BSDユーザーが困るだろ。だからPOSIXを尺度にすることは事実上無理がある。
- 202 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/08(土) 10:54:49 ]
- [[ 〜 ]] はPOSIXじゃないのでその主張には無理がある。
- 203 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/08(土) 11:11:35 ]
- >>197
$ sh -c 'type echo; echo -n hoge' echo is a shell builtin -n hoge $ PATH="/usr/ucb:$PATH" sh -c 'type echo; echo -n hoge' echo is a shell builtin hoge (改行なし)
- 204 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/08(土) 12:07:28 ]
- じゃあ、kshって結構 POSIXとはかけ離れてるんだ。
- 205 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/08(土) 12:29:33 ]
- kshをフルに使って書いたものはPOSIX shで動かないという意味では。
kshにあってPOSIXで採用されなかったものとしては、select文もそうだね。
- 206 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/08(土) 12:42:50 ]
- 実際のスクリプトでは全く使われていないのに
参考出品のリファレンスみたいに /usr/xpg4/bin/sh を置いてるSolarisって一体、、、 しかも、/usr/xpg4/bin/shはPOSIXじゃないし、 /usr/xpg4/bin/shが新標準だとしても 未だに/usr/xpg4/bin/shで /bin/shを置き換える気配もないし、、
- 207 名前:X/Open mailto:sage [2008/03/08(土) 12:44:44 ]
- >>206
> しかも、/usr/xpg4/bin/shはPOSIXじゃないし、 ( ゚д゚)ポカーン
- 208 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/08(土) 12:54:38 ]
- >>207
>>196 ( >>193 )
- 209 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/08(土) 12:55:25 ]
- >>207
>>194
- 210 名前:X/Open mailto:sage [2008/03/08(土) 13:04:11 ]
- 違うのは当たり前だろ
POSIXと違うとか 新標準とか アホかと思う
- 211 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/08(土) 13:06:00 ]
- /usr/xpg4/bin/shを置くなら、
なぜ /usr/posix/bin/sh を置かないのか、って話かな?
- 212 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/08(土) 13:06:30 ]
- その違うのをどうしましょうって話じゃないですか。
- 213 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/08(土) 13:22:56 ]
- XPG4準拠のが別途用意してあるのはいいことだ。
/bin/shと置き換えるとか、>>206は意味不明すぎ。
- 214 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/08(土) 21:16:51 ]
- autotoolsの吐くconfigureで使われているか否か、は移植性の判定材料になるだろうか。
- 215 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/08(土) 21:37:59 ]
- BSDヲタが騒ぐからautoconfは控えることw
- 216 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/08(土) 21:43:42 ]
- Solarisの/usr/xpg4/bin/shも、HP-UX、AIXの/bin/shも実体はkshだっつうの。
で、kshはPOSIXに一応準拠している。というかPOSIXが後付でkshの仕様をパクっただけ。 ただし、仕様が曖昧なところが多いから、 POSIX志向が強いbashなんかとkshでも、結構挙動が違っているところがある。
- 217 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/08(土) 21:49:08 ]
- 実体一緒でもargv[0]が違えば挙動が違うでしょ。
- 218 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/13(木) 15:52:12 ]
- Solarisでは/usr/xpg4/bin/shとkshは別バイナリだぞ。嘘書くな。
ハードリンクもしてないし、当然argv[0]も見てない。cmp比較してから書けよ。
- 219 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/13(木) 16:29:01 ]
- ソースレベルでは99%同じだけどな。
- 220 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/14(金) 19:19:44 ]
- 指定フォルダ以下のファイル数を
findを使って調べたいのです。 どなたかヘルプおながいします
- 221 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/14(金) 19:32:16 ]
- wc -l で行数を数えればいいんじゃねの
- 222 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/14(金) 19:45:19 ]
- フォルダって何ですか?
- 223 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/14(金) 22:03:10 ]
- >>222
> フォルダって何ですか? わろた
- 224 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/14(金) 22:11:38 ]
- >>222
素人さんにも通じるディレクトリの一般的な呼び方です。
- 225 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/14(金) 23:57:27 ]
- 質問です。
NETWORK |AAAA BBB CCCC |AAAA BBB CCCC AAAA |BBBB CCCC DDDD BBBB |UUUU DDDD FFFF このような5000行のテキストからヘッダー以外の最初のカラムを抜き出したいのですが ヘッダーと2行目の空白も抜き出してしまい、うまくいきません。 元のファイルをいじらず、うまくヘッダーを除いたカラムを抜き出せませんか? どうか教えていただけないでしょうか?
- 226 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/15(土) 00:15:30 ]
- sed -n 's/^[^|]*|//p' | awk '{ print $1 }'
sedは文字単位、awkはカラム単位と分担する
- 227 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/15(土) 00:17:47 ]
- 「ヘッダーと2行目の空白も抜き出し」た後に、先頭の2行を削ればいいのでは。
うんたらかんたら | { read x; read x; cat; }
- 228 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/15(土) 00:22:25 ]
- sed -ne '3,$p' | ...
- 229 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/15(土) 04:59:25 ]
- ヘッダってのは一カラム目の事なのか?
下手な説明だなw
- 230 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/15(土) 05:15:04 ]
- >>225
sed '1,2 d; s/|.*//' awk -F '|' 'NR > 2{ print $1 }' cut -d '|' -f 1 | tail +3
- 231 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/15(土) 09:23:42 ]
- >>226
sedでできることはすべてawkでもできるんだから、 awkを使うならsedは使っちゃ駄目。 1個のawkでできるのにsedと分担するのはバッドデザイン。 今回の場合は結局sedだけでできるんだから、 >>230 が最良回答だな。
- 232 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/15(土) 09:32:56 ]
- >>230
> sed '1,2 d; s/|.*//' できてないやんw
- 233 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/15(土) 09:39:22 ]
- 俺は仕様がわからんのだが…
二行目以外にも1カラム目が空白の行があるんじゃないのか? それなら、 awk 'NR > 1 { if ($2 !~ /^\|/) print $1; }'
- 234 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/15(土) 09:42:21 ]
- >>231
>>sedでできることはすべてawkでもできるんだから それは違う。 また、仮に出来ることでも 分担させることで、何をやっているのか明確になるなら無問題。 決してバッドデザインなどでは無い。
- 235 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/15(土) 09:49:07 ]
- >>234
それは awkプログラムになれていない者の考え。
- 236 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/15(土) 09:51:13 ]
- >>232
できてるだろ。
- 237 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/15(土) 09:54:56 ]
- というか、>>226 の sedの部分、間違ってるやん。
1カラム目を逆に削除してるww sedすらロクに書けない者が「分担」ですかw 何をやっているのか明確になってるはずなのに、こんな明らかな間違いですかww
- 238 名前:名無しさん@お腹いっぱい。 [2008/03/15(土) 10:05:16 ]
- >>234
sed でできて awk でできないことってたとえば何?
- 239 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/15(土) 10:52:44 ]
- >>237
おれは別に当人じゃないけど、 問題文を君とは違う解釈をしているだけで、 間違いではないと思う。 >>238 さあ?例えば出力の判定が遥か前方に有る場合とか?
- 240 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/15(土) 10:59:45 ]
- >>235
なれていないの定義が良く解らんが、 シェルのラッパを被っただけのawkスクリプトを書くわけじゃなくて、 シェルスクリプトを書くためにはawkプログラムを知悉する必要は無いと思う。 当人がsedで書いた方が後でメンテをし易いと思うなら、 そうすべきと思うことを阻害する理由は何もない。
- 241 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/15(土) 12:45:14 ]
- 一行野郎でどっちも使ってるけどそれぞれに良さはあるよ。
置換処理は sed の方が簡単に書ける。 カラム指向の処理は awk が便利。 ただ、sed の出力を awk に食わせるのは無駄が多いと思う。 たいていはどちらかだけで書けるだろうから。 俺はややこしくなってきたら perl とか ruby に逃げちゃうし。w シェルスクリプトで重要なのはメンテする人が分かりやすい事だと 思っているからこの考えを無理強いするつもりは無いけどな。
- 242 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/15(土) 13:33:44 ]
- >>225を良く読むと、>>233が正解仕様のような気がするのだが…
- 243 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/15(土) 14:43:31 ]
- awk -F"|" 'NR>1{print $1}'
- 244 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/15(土) 14:47:46 ]
- それじゃ二行目の空白が出力される。
>>225はデータに全角空白が含まれるから仕様が良くわからん。
- 245 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/15(土) 23:11:58 ]
- 質問です。
二つのファイルがあります。 ファイルAには以下の内容。 ----------------------- aaa bbb ccc ddd eee fff ggg ----------------------- ファイルBには以下の内容がかいてあります。 ----------------------- bbb ccc ----------------------- ファイルAからファイルBの内容を除去したファイルCを作りたいのですが、 どのようにすればよいでしょうか? (ファイルAやファイルBの内容は、時々かわります。)
- 246 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/15(土) 23:28:15 ]
- Bの各行が独立したパターンならgrep -f Bでよさそうだけど、
bbb ccc という塊で削除したいならそうもいかんよな。 diff -u A B | sed -n '1,/^@/d;/^-/s/^-//p' とか?
- 247 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/15(土) 23:29:04 ]
- おっと
×grep -f B ○grep -vf B
- 248 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/15(土) 23:31:32 ]
- >>245
ほれ、作ってやったよ。 #!/bin/sh cmd='cat fileA' while read str do cmd="$cmd | grep -v $str" done < fileB eval $cmd
- 249 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/15(土) 23:36:03 ]
- >>248
それだったら、grep -vf fileB fileA でいいじゃん。 >>247 がすでに答えてる。
- 250 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/16(日) 14:52:28 ]
- ファイルA,Bの並びが同じで、ファイルAにだけある行があるという場合は
commが使える。
- 251 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/18(火) 00:36:36 ]
- >>250
commって辞書順に並んでないと使えないよ。 たぶん、このケースはプログラムで一行づつチェックするしかないと思うんだ。
- 252 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/18(火) 05:09:00 ]
- fgrepにした方が安全。-eも付けて。
- 253 名前:名無しさん@お腹いっぱい。 [2008/03/18(火) 10:25:45 ]
- solarisのシェルスクリプトで教えてください。
スクリプト内で自分自身が置かれているディレクトリの絶対パスを取得したいのですが上手くいきません。 $0にパスが格納されていると聞いて以下のコードをtest.shとして実行したのですが./testという結果しか返ってきません。 #!/bin/bash /bin/echo $0 どうすれば絶対パスを取得できますか?
|

|