[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/10 01:32 / Filesize : 243 KB / Number-of Response : 985
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

シェルスクリプト総合@LINUX Part4



1 名前:login:Penguin mailto:sage [2008/05/17(土) 13:44:57 ID:9hFWtCOD]
UNIX板のスレを見ている方も多数おられるかと思いますが、
まあそれはそれとして、BASHウゼーとか言われる心配なく
平和にLINUX的スクリプト談義しましょうよ。

初めての自作スクリプト、自信ないから見てください。な初心者から
トリッキーな技を駆使した作品を披露したい、蘊蓄を語りたい上級者まで
いろいろな人に参加して頂けると嬉しいです。

perlやらPythonやらの話が混ざっても良いんでない?

Part3 : pc11.2ch.net/test/read.cgi/linux/1184077033/
Part2 : pc11.2ch.net/test/read.cgi/linux/1154578200/
Part1 : pc8.2ch.net/test/read.cgi/linux/1121994321/

>>2-5あたりに色々と。

75 名前:login:Penguin mailto:sage [2008/06/03(火) 22:49:50 ID:OcnJ3se+]
#!/bin/sh

perl sh.pl
ruby sh.rb
php sh.php

system("hoge.sh",$ret);
exec("hoge.sh",$ret);

exec("sed 's/B/A/g' $current > $tmp",$ret);
exec("rm $current",$ret);
system("mv $tmp $current",$ret);

もう人生バラ色です

76 名前:login:Penguin mailto:sage [2008/06/03(火) 23:39:04 ID:/nacTMrw]
俺の人生はルビー色

77 名前:login:Penguin mailto:sage [2008/06/03(火) 23:48:22 ID:J2hvNDuq]
質問です。

$ ls "a"
file1  file2
$ echo ls \"a\"
ls "a"
$ `echo ls \"a\"`
ls: cannot access "p": No such file or directory

三つめでエラーになるのはなんででしょう?
こういう時はどう書くのが正しいのですか?


78 名前:login:Penguin mailto:sage [2008/06/03(火) 23:52:30 ID:4a1SGQ4Q]
$ ls "a"
ls: a: No such file or directory
$ echo ls \"a\"
ls "a"
$ `echo ls \"a\"`
ls: "a": No such file or directory
$

79 名前:login:Penguin mailto:sage [2008/06/03(火) 23:53:03 ID:wxT19Ovz]
eval `echo ls \"a\"`

80 名前:77 mailto:sage [2008/06/03(火) 23:55:16 ID:J2hvNDuq]
>>79
おお!早速ありがとうございました。

81 名前:login:Penguin mailto:sage [2008/06/04(水) 10:36:15 ID:bCIXok9Z]
bashの/dev/nullについて質問します。
lsの表示結果でエラー出力だけは表示させずに
標準出力のみtest.txtファイルに出力したいのですが
自分の理解では以下に書いた2になりますが、表示結果
では1でないと通りません。どのようにイメージしたら宜しいのでしょうか?

1: ls /home/ > /dev/null 2>&1 > test.txt
2: ls /home/ > test.txt > /dev/null 2>&1

82 名前:login:Penguin mailto:sage [2008/06/04(水) 10:42:14 ID:jifIrR2s]
>>81
「bash のリダイレクトについて」だろ。
/dev/null は bash の問題ではない。

ls /home/ >/dev/null 2>test.txt
で OK。

83 名前:login:Penguin mailto:sage [2008/06/04(水) 11:04:40 ID:bCIXok9Z]
>>82
すいません、リダイレクトについてでした。回答有難うございます。
ls /home/ >/dev/null 2>test.txtについての流れで確認を
して頂きたいのですが宜しくお願い致します。

上記の標準出力1の状態について、lsの結果が/dev/nullに行く。
(ここでデータは破棄されてしまうという考えなのですが)
そして、エラー出力2はtest.txtになってますよね?

1の状態 /dev/null
2の状態 test.txt



84 名前:login:Penguin mailto:sage [2008/06/04(水) 11:52:58 ID:3E+PCnl7]
>>81
> 1: ls /home/ > /dev/null 2>&1 > test.txt

1) /dev/null を標準出力の出力先に指定
2) 標準出力の出力先をエラー出力の出力先に指定
3) test.txt を標準出力の出力先に指定

結果
標準出力: test.txt
エラー出力: /dev/null


> 2: ls /home/ > test.txt > /dev/null 2>&1

1) test.txt を標準出力の出力先に指定
2) /dev/null を標準出力の出力先に指定
3) 標準出力の出力先をエラー出力の出力先に指定

結果
標準出力: /dev/null
エラー出力: /dev/null

85 名前:login:Penguin mailto:sage [2008/06/04(水) 11:59:59 ID:jifIrR2s]
>>81
1: でほんとにうまく行ってる?

86 名前:login:Penguin mailto:sage [2008/06/04(水) 16:29:28 ID:bCIXok9Z]
>>84
リダイレクトは出力先を決めるだけなのですか。
解説して頂いた通りで色々パターンを考えてみましたら
出来るようになりました、有難うございます

>>85
一応処理結果では正常な雰囲気なのですが、>>81ですと
理解しずらいので、変えようか考えています。

レス遅れましたが皆さんありがとうございました

87 名前:login:Penguin mailto:sage [2008/06/04(水) 22:17:21 ID:T1bDhlj1]
>>86
シェルどころか日本語まで・・・

88 名前:login:Penguin mailto:sage [2008/06/05(木) 00:21:00 ID:lO8RLUCT]
与えられたパスを絶対パスに正規化したいのですがどうすればよいですか?
単に相対->絶対の変換をするだけじゃなくて
.とか..も適切に変換してくれるとうれしいのですが。


89 名前:login:Penguin mailto:sage [2008/06/05(木) 00:23:58 ID:qyhUQGl8]
>>88
`pwd`/$1

90 名前:login:Penguin mailto:sage [2008/06/05(木) 00:32:17 ID:brEG0pS6]
realpathだっけ?

91 名前:login:Penguin mailto:sage [2008/06/05(木) 06:27:50 ID:Ysl4yLMq]
ここはLinux板だからreadlink -fでどうか

92 名前:login:Penguin mailto:sage [2008/06/07(土) 17:03:59 ID:lYfLA/cT]
スレ違いのような気もしますが・・・
lsの出力が端末だとスペース区切りなのにパイプやリダイレクトすると改行になるのはどういう仕組みですか?


93 名前:login:Penguin mailto:sage [2008/06/07(土) 17:10:19 ID:6DqLCPKX]
isatty(3)



94 名前:92 mailto:sage [2008/06/07(土) 17:13:39 ID:lYfLA/cT]
なるほど、lsのほうで端末かどうかみてるんですね…
納得しました。どうもありがとうございます。

95 名前:login:Penguin mailto:sage [2008/06/08(日) 00:25:14 ID:z0g0MNBT]
スレ違いだと思うならくだ質に行きなさい。

96 名前:login:Penguin mailto:sage [2008/06/08(日) 14:37:28 ID:w3H8z2Sk]
シェルスクリプト中で、リダイレクトでファイルを生成するとファイル名が文字化けしてしまうのですが
一体何が悪いんでしょうか。
↓みたいなことになります。

$ echo $LANG
ja_JP.UTF-8
$ cat test.sh
echo a > "$1"
$ echo hoge > "あいうえお.hoge" ; ls
test.sh あいうえお.hoge
$ sh test.sh "あいうえお.hoga” ; ls
??????????.hoga test.sh あいうえお.hoge

touchとかなら文字化けしないようなのですが。


97 名前:96 mailto:sage [2008/06/08(日) 14:54:23 ID:w3H8z2Sk]
補足です。

$ ls | hexdump -C
00000000 e3 82 e3 84 e3 86 e3 88 e3 8a 2e 68 6f 67 61 0a |...........hoga.|
00000010 74 65 73 74 2e 73 68 0a e3 81 82 e3 81 84 e3 81 |test.sh.........|
00000020 86 e3 81 88 e3 81 8a 2e 68 6f 67 65 0a |........hoge.|
0000002d


98 名前:login:Penguin mailto:sage [2008/06/08(日) 21:58:48 ID:cpZuCikO]
ls --show-control-chars

99 名前:login:Penguin mailto:sage [2008/06/09(月) 19:55:01 ID:Dt/jCYdy]
jp.youtube.com/watch?v=x7pPajOvQGo
ワロタ

100 名前:login:Penguin mailto:sage [2008/06/09(月) 20:44:39 ID:19yx0Oqh]
注文スクリプトを作りました、ってこと?

101 名前:login:Penguin mailto:sage [2008/06/09(月) 20:52:39 ID:1XPLtUDQ]
日本でもオンライン注文のピザ屋があれば出来そうね。
映画ジュラシックパークの中でプログラマーがデブでピザ食べていたけど、
この動画もその皮肉?

102 名前:login:Penguin mailto:sage [2008/06/09(月) 20:56:56 ID:zrUasBao]
シェルスクリプトじゃないけど。
e8y.net/blog/2006/07/25/p126.html

103 名前:login:Penguin mailto:sage [2008/06/09(月) 21:02:45 ID:zrUasBao]
>>101
hacker の食べ物といえば
ピザと Jolt Cola と相場が決まっておる。



104 名前:login:Penguin mailto:sage [2008/06/10(火) 00:00:50 ID:Uz5XyeDf]
なんだPizza Partyか
slashdot.jp/article.pl?sid=04/05/08/0858242

105 名前:login:Penguin [2008/06/10(火) 13:27:23 ID:Gys5ZtGT]
2037→1048→2481207→↓
2037→1048→2481207→↓
20311→1056→2481211→↓
20320→1114→2481218→↓
20320→1114→2481218→↓
20326→1155→2481211→↓
20326→1155→2481211→↓
→ →2481211→
→ →2481211→↓
tomo.txtの中身はこうなっています。(→はタブ、↓は改行コードです)
これで2列目に何も文字列が入っていない場合は3列目も何も文字列を
入れないようにしたいです。(上のtxtの場合だと下の2行が対象になります)
sedとcutでなんとかなるかと思ったんですけどなかなかうまくいきません。
誰かいいスクリプトを教えて下さい。宜しくお願いします。

106 名前:login:Penguin mailto:sage [2008/06/10(火) 14:03:41 ID:rnP/TIGa]
これでどう?

awk '{if (length($2) != 0) print;}' tomo.txt

107 名前:105 [2008/06/10(火) 15:27:43 ID:Gys5ZtGT]
早速のレスありがとうございます。でもうまく動かないです。。。
試しにlengthの値を変えてみたりしたんですが何も変化がないです。。

108 名前:login:Penguin mailto:sage [2008/06/10(火) 16:24:40 ID:mINSOvv3]
>107
もっと具体的に目的を書かないとどういう結果が欲しいのか解らんよ。
>105の下から2行目は改行が入ってないの?
それとなにも列に入っていないと言いつつ全角スペースが入っているのは何故?
まあ、やりたいことを推測して例を出せばこんな感じか?
cat tomo.txt | while read LINE;do set -- $LINE; if [ $# = 3 ]; then echo "$LINE"; fi; done

109 名前:105 [2008/06/10(火) 19:02:47 ID:CM93IypP]
>>108さん
ご回答ありがとうございます。
すみません。
>105の下から2行目は改行が入ってないの?
入ってます。
>それとなにも列に入っていないと言いつつ全角スペースが入っているのは何故?
実際には入っていません。
ですから正確にはtomo.txtはこうなってます。
2037→1048→2481207→↓
2037→1048→2481207→↓
20311→1056→2481211→↓
20320→1114→2481218→↓
20320→1114→2481218→↓
20326→1155→2481211→↓
20326→1155→2481211→↓
→→2481211→↓
→→2481211→↓

110 名前:105 [2008/06/10(火) 19:05:04 ID:CM93IypP]
それを以下の下2行の2列目に文字列がない場合は
削除したいので以下のような結果を出して欲しいんです。
2037→1048→2481207→↓
2037→1048→2481207→↓
20311→1056→2481211→↓
20320→1114→2481218→↓
20320→1114→2481218→↓
20326→1155→2481211→↓
20326→1155→2481211→↓
→→→↓
→→→↓

何度もすみません。よろしくお願いします。

111 名前:105 [2008/06/10(火) 19:19:42 ID:CM93IypP]
cat tomo.txt | while read LINE;do set -- $LINE; if [ $# = 3 ]; then echo "$LINE"; fi; done
を試してみましたけどやはり何も変化はありませんでした。
すみません。お願いします。

112 名前:login:Penguin mailto:sage [2008/06/10(火) 19:35:16 ID:gcco3DVH]
よくわからんけど、タブが2回続いたらタブ3個だけの行に置き換えるとかじゃだめなの?
やり方は知りません

113 名前:login:Penguin mailto:sage [2008/06/10(火) 21:34:41 ID:39ga6S1g]
これはどうだ?

awk -F '¥t' '{if ($2 == "") { $3 = ""}; print}' < tomo.txt

awkのデフォの列識別はタブじゃないから-Fで指定してね。




114 名前:105 [2008/06/11(水) 03:27:04 ID:bnnOzDXT]
>>113
ありがとうございます。今日はこんな時間なので明日試してみます。
'\t'の部分がうまく識別してくれたらいけそうな感じがします。

115 名前:105 [2008/06/11(水) 05:10:34 ID:bnnOzDXT]
おはようございます。
今試してみたらうまく動きました。ありがとうございました。

116 名前:login:Penguin mailto:sage [2008/06/11(水) 05:47:46 ID:wK/2Md+f]
>>114 >>115
明日ってw 

117 名前:105 [2008/06/11(水) 08:14:21 ID:sVHDZWwZ]
あっーーー!よくみたら
2037→1048→2481207→↓
2037→1048→2481207→↓
20311→1056→2481211→↓
20320→1114→2481218→↓
20320→1114→2481218→↓
20326→1155→2481211→↓
20326→1155→2481211→↓


って感じで最後の2行のタブが全部消えてました。。。
これは消えると困るんです。再度お願いします。。。

118 名前:login:Penguin mailto:sage [2008/06/11(水) 08:47:58 ID:uz75y6lZ]
難問が…

119 名前:login:Penguin mailto:sage [2008/06/11(水) 10:00:16 ID:NnMk6hEw]
>112でいけるだろ
sed -e 's/\t\t[^\t][^\t]*/\t\t/' tomo.txt
\tが使えなかったらタブで置きかえる。

120 名前:login:Penguin mailto:sage [2008/06/11(水) 10:14:39 ID:tvbxZjG7]
>>117

あり? $2 = ""をしない行はちゃんとタブで分けたまま出力してるのに
置き換えをした行はスペースが出力区切り文字になっちゃうな。

じゃ、無理矢理修正

awk -F '¥t' -v OFS='¥t' '{if ($2 == "") { $3 = ""}; print}' < tomo.txt

OFS はoutput field separator



121 名前:105 [2008/06/11(水) 11:52:44 ID:sVHDZWwZ]
ありがとうございます!
今度こそ大丈夫です!本当にありがとうございます!

122 名前:login:Penguin mailto:sage [2008/06/11(水) 22:25:09 ID:8Wsl19+C]
Open Foundation Software じゃないのか。

123 名前:login:Penguin mailto:sage [2008/06/12(木) 00:10:41 ID:JqmZrOtu]
>>122
OSFですがw Open Software Foundation




124 名前:login:Penguin mailto:sage [2008/06/12(木) 11:24:21 ID:irJT+vdW]
誰かピザハット対応ピザ注文コマンド作ってくれないものか。

125 名前:login:Penguin mailto:sage [2008/06/12(木) 11:52:43 ID:3DTOjPry]
>>124
出前館にあるみたいだから、>>102 をいじれば作れるんじゃない?

126 名前:login:Penguin [2008/06/12(木) 12:44:22 ID:Y4yiWWC/]
#xxx.txtの1行目を変数iに代入します
for i in `cat xxx.txt`
do
#xxx.txtの2行目を$jに入れます
j=`sed -n '2p'
export j
#変数eeeにxxx.txtの2行目から15行目を代入します
eee=`sed -n '2-15p'
export eee
#pasteで結合できるように変数をtxtファイルに入れます
echo $i > i.txt
echo \t > ccc.txt
echo $eee > eee.txt
if
#xxx.txtの行の先頭が20から始まる場合
then test $j = "^20"
#結合します
paste i.txt ccc.txt eee.txt
else
#何もしない
fi
done

初心者です。こんなスクリプトを作ったんですけどうまく動きません。
修正していただけるとありがたいです。お願いします。

127 名前:126 [2008/06/12(木) 12:55:44 ID:Y4yiWWC/]
#xxx.txtの1行目を変数iに代入します
for i in `cat xxx.txt`
do
#xxx.txtの2列目を$jに入れます
j=`sed -n '2p'
export j
#pasteで結合できるように変数をtxtファイルに入れます
echo $i > i.txt
echo \t > ccc.txt
if
#xxx.txtの行の先頭が20から始まる場合
then test $j = "^20"
#結合します
paste i.txt ccc.txt eee.txt
else
#何もしない
fi
done

間違えました。eee.txtは別途作りますので上記のような感じです。

128 名前:login:Penguin [2008/06/12(木) 14:03:25 ID:Y4yiWWC/]
意味不明ですみません。会社から回りの人の目を盗みながら
こそこそと2ちゃんねるやってるんで・・・
これでお願いします。
#変数aaaにxxx.txtの1行目を代入します
for aaa in `cat xxx.txt`
do
#変数bbbにxxx.txtの2行目を代入します
bbb=`sed -n '2p'
export=bbb
#変数cccに$iの1列目を代入します
ccc=`cat $i | cut -f1`
export=ccc
#変数dddに$iの2から14列目を代入します
ddd=`cat $i | cut -f2-14`
exprot=ddd
if
#xxx.txtの2行目の先頭行が20の場合は切り出したファイルを結合します
then test $aaa = "^20"
paste ccc.txt tab.txt ddd.txt
elsei
#それ以外の場合はその列をそのままファイルに書き出します
echo aaa.txt
fi
done

129 名前:login:Penguin mailto:sage [2008/06/12(木) 18:57:20 ID:RuYhMH5C]
>>126
日本語でおk

人に説明するためにやりたいことを整理すると自然に解決したりするものよ。

130 名前:login:Penguin mailto:sage [2008/06/12(木) 19:11:00 ID:3DTOjPry]
最初に for を持ち出したところからすでに意図がわからん。

131 名前:login:Penguin mailto:sage [2008/06/12(木) 19:16:11 ID:kPFkNEQb]
perlでやればいいと思うよ

132 名前:126 [2008/06/12(木) 19:28:24 ID:TxRWHMwb]
>>129
ありがとうございます。でもなかなかうまくいかないんです。
>>130
すみません。for文の処理がうまくいかないんで抜粋しました。
>>131
perlは全然わかんないんでなんとかシェルでやりたいです。

133 名前:login:Penguin mailto:sage [2008/06/12(木) 20:00:58 ID:48VJya+Z]
任意の時間を入力し、それをUTC時間に変換することは可能でしょうか?
dateコマンドだとカレントタイムを変換してしまうので。。



134 名前:login:Penguin mailto:sage [2008/06/12(木) 20:55:58 ID:JwqUhAVV]
date -u
じゃダメなのかな

135 名前:login:Penguin mailto:sage [2008/06/12(木) 21:14:33 ID:lC+5xa2L]
それに -d オプションを付けたいんじゃないのかな。

$ date -u -d '2001/5/20 13:33:35 JST'

136 名前:login:Penguin mailto:sage [2008/06/12(木) 21:41:49 ID:JqmZrOtu]
>>133
awkにあるmktime, strftime関数を使うのが一番手軽かな。


137 名前:133 mailto:sage [2008/06/12(木) 23:39:42 ID:mOwz8//t]
>>134-136
実現できました!
即レス助かりました。ありがとうございます。

138 名前:login:Penguin mailto:sage [2008/06/13(金) 08:03:49 ID:TrNV+QBw]
>>126 は解決したのだろうか。
俺には意図が解らなかったが。

139 名前:126 [2008/06/13(金) 09:47:03 ID:j8pwVaea]
>>138
心配していただきありがとうございます。まだ未解決です。
簡単にいうと
aaa.txtが
[100]
201
202
203

[200]
301
302
303
となっている場合に
[100] 201
[100] 202
[100] 203

[200] 301
[200] 302
[200] 303
としたいんです。(スペースのところはタブ区切りを入れたいです)
お願いします。

140 名前:login:Penguin mailto:sage [2008/06/13(金) 10:12:43 ID:+c/4qhZ/]
#!/usr/bin/perl
my $i = '';
while (<>) {
chomp;
if ($_ eq '') {
$i = '';
print "\n";
} elsif ($i eq '') {
$i = $_;
} else {
print "$i\t$_\n";
}
}

141 名前:126 [2008/06/13(金) 10:25:54 ID:j8pwVaea]
>>140
それを今試してみたら
[100]
[100] 201
[100] 202
[100] 203
[100]
[100] 301
[100] 302
[100] 303
みたいになっちゃいました。
せっかくコードを書いていただいたのですがちょっと
結果が違いました。すみません。

142 名前:login:Penguin mailto:sage [2008/06/13(金) 10:28:27 ID:5MIbjJC0]
> 126

awk 'BEGIN {OFS = "\t";}; $0 != "" {if ($0 ~ /^\[/) section = $1; else print section, $1}' aaa.txt

多分もっと格好よくできるはずなんだけどなぁ

143 名前:login:Penguin mailto:sage [2008/06/13(金) 10:38:47 ID:obeusV/U]
>>139
gawk '{if(match($0,/^\[[0-9][0-9]*\]$/))t=$0;else{if(length)$0=t "\t" $0;print;}}' aaa.txt

sed -e '/^\[[0-9][0-9]*\]$/{h;d}/^..*/{x;G;s/\n/\t/;p;s/\t.*//;h;d}' aaa.txt

まだ短くならないかな。



144 名前:login:Penguin mailto:sage [2008/06/13(金) 10:43:39 ID:+c/4qhZ/]
>>141
203 の次の行は空行じゃないの?

145 名前:login:Penguin mailto:sage [2008/06/13(金) 10:45:41 ID:+c/4qhZ/]
>>126
> #変数eeeにxxx.txtの2行目から15行目を代入します
> #xxx.txtの行の先頭が20から始まる場合
最初と言ってることぜんぜん違うじゃねーか。

146 名前:126 [2008/06/13(金) 11:04:27 ID:j8pwVaea]
>>142
おおおっ。すごいです。ありがとうございます。
で、あまりにも簡単に説明しすぎたせいで少し動作が違いました。
実際にはaaa.txtは複数の列でできています。
[100]
201 100 200
202 100 200
203 100 200
""

[200]
301 100 300
302 100 300
303 100 300
""

あと先頭が数字では始まらないけど文字列が入っている場合もあります。
その列は何も処理をしたくないんです。もちろん空白の列にも何も処理をしたくないです。
説明が不足していてすみません。お願いします。

147 名前:login:Penguin mailto:sage [2008/06/13(金) 11:08:06 ID:+c/4qhZ/]
どんどん条件変わるな。
もう付き合いきれん。

148 名前:login:Penguin mailto:sage [2008/06/13(金) 11:09:51 ID:+c/4qhZ/]
>>140 を好きに改造して使ってくれ。

149 名前:login:Penguin mailto:sage [2008/06/13(金) 11:57:53 ID:5MIbjJC0]
>>126

#!/usr/bin/awk

BEGIN {
OFS = "\t"
}

{
if ($1 ~ /^\[.+\]$/) {
section = $1
} else if ($1 ~ /^[0-9]/ ) {
sub(FS, OFS) # これがいるかどうか分からない
print section, $0
} else {
print
}
}

まぁ暇だし,自分の勉強にもなるしな

150 名前:126 [2008/06/13(金) 12:12:09 ID:j8pwVaea]
>>147
ごめんなさいごめんなさい。許して下さい。
>>148
ありがとうございます。今から試してみます。感謝してます。

151 名前:126 [2008/06/13(金) 12:24:52 ID:j8pwVaea]
>>149
^ syntac error
^ 正規表現が終端がされていません
って出ます。
そのコードを2.awkとして保存してchmod 755 で
./2.awk < aaa.txt > bbb.txt
としたんですけど僕のやりかたが悪かったんでしょうか。
もうちょっと試してみます。すみません。

152 名前:login:Penguin mailto:sage [2008/06/13(金) 13:34:55 ID:frtx8yVp]
シェルとかプログラミング言語よりも,ちゃんと説明できる日本語を習得するのが先だとしみじみ思う.

153 名前:126 [2008/06/13(金) 13:45:24 ID:j8pwVaea]
awk -f ./2.awk < aaa.txt > bbb.txt で実行できました。すみません。
でも結果としては数字のところにタブが挿入されただけでうまくいきませんでした。
また時間がある時にで結構ですので教えてくださると助かります。よろしくお願いします。



154 名前:126 [2008/06/13(金) 14:31:16 ID:j8pwVaea]
あれれ。すみません。aaa.txtを作って試してみたらうまく動作してました。
元データのほうに何か問題があるようです。確認してみます。

155 名前:126 [2008/06/13(金) 14:57:25 ID:j8pwVaea]
>>149
ありがとうございます。感謝感謝です。
if ($1 ~ /^\[.+\]$/) {

if ($1 ~ /^\[.+\]*$/) {
にして無事動作しました。[]の後ろに文字列が入っているのが原因でした。
本当にありがとうございます。

156 名前:login:Penguin mailto:sage [2008/06/15(日) 03:39:35 ID:sc6xQlic]
#!/bin/sh
n=`cat text.txt`

で読み込んだ$nに対して
一行ずつ処理を行いたいのですがどうしたらよいでしょうか

for a in $n

を使おうと思ったのですが、スペースでも分割されてしまい
理想の動作をさせることができません
よろしくお願いします

157 名前:login:Penguin mailto:sage [2008/06/15(日) 04:58:13 ID:wo2EqLas]
cat text.txt | while read line;
do
echo "$line";
done

while read line;
do
echo "$line";
done < text.txt

ダブルクオート

158 名前:login:Penguin mailto:sage [2008/06/15(日) 07:24:02 ID:Wqtu/af2]
done < text.txt はbash依存だったような

159 名前:login:Penguin mailto:sage [2008/06/15(日) 09:18:42 ID:sc6xQlic]
>>157
できましたありがとうございます!
whileの中でreadを再び使えば同時に何行まとめて、という処理が出来るんですね

160 名前:login:Penguin mailto:sage [2008/06/15(日) 09:44:47 ID:riPFD/ci]
>>158
Linux板的にはいいんでないの。 Unix板だったら気にしたほうがいいかもしれんが。


161 名前:login:Penguin mailto:sage [2008/06/15(日) 10:19:04 ID:+vOR/R57]
>>158
/bin/shでも動くからおk

162 名前:login:Penguin mailto:sage [2008/06/15(日) 10:47:11 ID:Wqtu/af2]
dashもOKだから、まぁいいのか

163 名前:login:Penguin mailto:sage [2008/06/15(日) 12:04:09 ID:MYPOmB3X]
そのあたりってPOSIXでちゃんと規定されてるものなの?
単にbashをまねて取り込んだshなのか、真のshからサポートする機能か
どうしたら見分けつけられるのかよくわからない。



164 名前:login:Penguin mailto:sage [2008/06/15(日) 12:33:26 ID:+vOR/R57]
www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html

165 名前:login:Penguin mailto:sage [2008/06/15(日) 12:43:50 ID:cU/mpVoU]
bash や dash があるなら、cash もあるのかな。
Csh-Again SHell とか。

166 名前:login:Penguin mailto:sage [2008/06/15(日) 12:53:50 ID:MYPOmB3X]
>>165
生まれ変わらなくていい。そのまま墓場で寝ててくれ>*csh


167 名前:login:Penguin mailto:sage [2008/06/15(日) 12:56:31 ID:MYPOmB3X]
>>164
トン。$(command)とか$((expr))って標準だったんだとか色々勉強になるな。




168 名前:login:Penguin mailto:sage [2008/06/15(日) 18:20:40 ID:ue0hzIrD]
bashで文字列の最後尾が / にあたるものをヒットさせたいのですが、どのようにしたら宜しいでしょうか?

169 名前:login:Penguin mailto:sage [2008/06/15(日) 18:49:35 ID:LSl6/nZ+]
bashにそんな機能はない

170 名前:login:Penguin mailto:sage [2008/06/15(日) 18:53:49 ID:aTr7Cyki]
bash()笑

171 名前:login:Penguin mailto:sage [2008/06/15(日) 18:54:17 ID:2ND6A6mz]
grepで$を使うって話?

172 名前:login:Penguin mailto:sage [2008/06/15(日) 19:14:12 ID:AOTtbX65]
エスケプすればなんとでも。

173 名前:login:Penguin mailto:sage [2008/06/15(日) 19:23:37 ID:lWrIWsAm]
>>168
case "$str" in
*/)
  echo "match."
  ;;
*)
  echo "unmatch."
  ;;
esac




174 名前:login:Penguin mailto:sage [2008/06/16(月) 02:02:05 ID:irk9chgy]
>>168です。仕事が入ってしまいレス遅れました、すいません。
bashにそのような機能はありませんか・・・。
grepでは無く条件式で文字列の末尾を判定させたかったのですが
何も知らない自分としては>>173さんの書いて頂いたのを参考に
しようかと思います。助かりました、有難うございます。

175 名前:login:Penguin mailto:sage [2008/06/16(月) 08:11:50 ID:JECOF4SI]
>>169に対する皮肉としか読めない。






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

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

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