シェルスクリプト総合 その29

レス数が950を超えています。1000を超えると書き込みができなくなります。
2018/09/22(土) 11:53:21.38ID:BBiLRgnj0
!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512
シェルスクリプトに関する総合スレッドです。

スレ立て時は以下の文を先頭行に加えて下さい。
後のつけ忘れ防止の為に複数行重ねて追加推奨
!extend:on:vvvvv:1000:512

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。

前スレ
シェルスクリプト総合 その28
http://mevius.5ch.net/test/read.cgi/tech/1532397676/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2018/12/26(水) 09:38:30.84ID:GigxKnwz0
watchで表示更新時間ごとに変数の加算は出来ませんか?
2018/12/26(水) 11:17:37.79ID:SKc2oSlY0
無理。自分でwatchを実装しろ
2018/12/26(水) 11:19:29.41ID:SKc2oSlY0
訂正 自分でシェルスクリプト版watchを実装しろ
2018/12/30(日) 08:42:00.02ID:btIksil/0
区切り文字を指定して文字列を分割するときに
区切り文字が一種類の場合はcut(1)とかを使うし
区切り文字がBREで表わされるような場合はAWKを使うけど
各フィールド毎に特定の区切り文字があるような時はどうすればいいかな。

今やろうとしていることはISO 8601形式の日付を空白区切りに分解することで
2018-12-30T08:36:50+09:00
↑こういう文字列を
2018 12 30 08 36 50 + 09 00
↑こういう空白区切りに分解したい。
その為には「第1,2,3フィールドはハイフン,第4フィールドは文字T,第5,6,7フィールドはコロンで分割する」
っていう具合の処理を考えないといけない。
正直,sedを使えばいいんだけど,もうちょっとスマートな方法があれば教えてほしい……。
sedだと↓
sed -n -e 's/\([[:digit:]]\{4\}\)-\([[:digit:]]\{2\}\)-\([[:digit:]]\{2\}\)T\([[:digit:]]\{2\}\):\([[:digit:]]\{2\}\):\([[:digit:]]\{2\}\)\([+-]\)\([[:digit:]]\{2\}\):\([[:digit:]]\{2\}\)/D:\1\2\3\4\5\6\7\8'"'"'\9/1p'
↑こんなことになるw
2018/12/30(日) 10:20:55.12ID:Ob5186rT0
>>869
入力形式が確定しているから単純化して
sed 's/[-+:T]/ /g'
とかはどう?
2018/12/30(日) 10:23:20.84ID:Ob5186rT0
>>870
書き込んでから気づいたがこれだと+の周りが処理できないな
872デフォルトの名無しさん (ワッチョイ c6be-DhLY)
垢版 |
2018/12/30(日) 10:40:37.85ID:btIksil/0
>>871
そうなんだよね……
もし+に特殊な処理をしないならば
tr '-+:T' ' '
で一発なんだけど、できないんだよ。
2018/12/30(日) 10:53:56.67ID:MMB+AHvh0
sed 's/+/ + /;s/[-:T]/ /g'
では??
2018/12/30(日) 11:01:57.94ID:/wKH6dhf0
>>869
#!/bin/sh
t="2018-12-30T08:36:50+09:00"
IFS="-T:+"
set -- $t
echo $1 $2 $3 $4 $5 $6 + $7 $8
2018/12/30(日) 11:08:31.89ID:MMB+AHvh0
タイムゾーンはマイナスありか
2018/12/30(日) 11:25:42.74ID:MMB+AHvh0
sed 's/-/ /;s/-/ /;s/\([+-]\)/ \1 /;s/[:T]/ /g'
なんか泥臭いけど
2018/12/30(日) 11:28:51.37ID:/wKH6dhf0
#!/bin/sh
t="2018-12-30T08:36:50+09:00"
IFS="-T:+"
set -- $t
case ${t%?????} in
*+) echo $1 $2 $3 $4 $5 $6 + $7 $8 ;;
*-) echo $1 $2 $3 $4 $5 $6 - $7 $8 ;;
esac
2018/12/30(日) 11:32:49.36ID:/wKH6dhf0
date -d "2018-12-30T08:36:50-09:00" "+%Y 略" (飽きた)
2018/12/30(日) 11:48:16.88ID:btIksil/0
>>874
それだとアメリカとかのタイムゾーン-03:00に対応できなくね?
2018/12/30(日) 11:49:02.96ID:btIksil/0
>>877
すまん。ちゃんと対応してくれてた。
2018/12/30(日) 16:00:37.71ID:yEx+bcWd0
GNU grep の場合

$ echo '2018-12-30T08:36:50+09:00' | grep -Po '([0-9]{2,4}|(?<=:[0-9]{2})(\+|-))' | xargs
2018/12/30(日) 16:49:11.50ID:btIksil/0
>>881
すげー。
でも後から自分でデバッグできなさそうなのでやめておくw
2018/12/30(日) 18:51:33.10ID:iF2NHAVN0
t="2018-12-30T08:36:50+09:00"
echo "${t:0:4} ${t:5:2} ${t:8:2} ${t:11:2} ${t:14:2} ${t:17:2} ${t:19:1} ${t:20:2} ${t:23:2}"
2019/01/01(火) 13:16:40.82ID:0CXB5czV0
:digit:より0-9のほうが打件数少ないのはなんなんだ
2019/01/01(火) 13:57:25.01ID:WRhsD0vEa
単に意味を優先した表現方法があるだけやろ
2019/01/05(土) 11:12:13.83ID:dE0KuiGH0
本当に一部のシステムでの話だけど
[:digit:]がロケールの数値表現にも合致する場合がある
「1」とか。
2019/01/07(月) 14:59:50.50ID:01rSRjtda
test.txtの内容が
hoge
fuga
puge

で、
sed -i -e s/hoge\n// test.txt
とやったのに『hoge(改行コード)』が消えてくれないたすけて
test.txtの一行目を削除 → 2行目が一行目に、
みたいにトコロテンしたい
2019/01/07(月) 15:08:57.37ID:01rSRjtda
自己解決・・・
sed -i -e ':a;N;$!ba;s/hoge\n//' test.txt
ってやったらできました・・何この呪文。。
2019/01/07(月) 15:30:19.88ID:RynyI9pj0
sed -i -e '/hoge/d' test.txt じゃダメなん?
2019/01/07(月) 15:36:38.32ID:01rSRjtda
>>889
で、できました
それ使っていきます ありがとうございました
891デフォルトの名無しさん (アウアウウー Sa9d-KJeM)
垢版 |
2019/01/07(月) 19:03:53.04ID:fnTlHl64a
grep -v もよろしく
2019/01/07(月) 19:52:44.45ID:fRqqYmWxa
一行目を消したいのかhogeを消したいのか
2019/01/07(月) 19:54:56.69ID:52D4hsE60
全部消したい。何もかも
2019/01/07(月) 20:31:04.88ID:Opohu4pM0
要らない
何も
消してしまおう
895デフォルトの名無しさん (アウアウウー Sa9d-KJeM)
垢版 |
2019/01/08(火) 09:33:22.38ID:LJT6VvGba
そんなあなたに rm
2019/01/10(木) 04:57:31.17ID:yVo/NDAD0
ネットワーク通信(特にhttpクライアント)に関するコマンドって
大きくwgetとcurlとfetchなんかがあるけどもみんなはなに使ってます?
大抵のLinuxにはwgetが、MacとWindowsにはcurlが初期搭載されてるので
そのどっちかだとは思う。
2019/01/10(木) 09:31:04.31ID:d7ZwxpvN0
スクリプトの場合はオプションが面倒くさくいのは関係ないから
個人的には自由度の高いcurl一択かな

直接コマンド打ってダウンロードするときはaria2cを使ったりする
898デフォルトの名無しさん (アウアウウー Sa89-JzEj)
垢版 |
2019/01/10(木) 10:00:22.11ID:jQehovm3a
昔から使ったていたというだけの理由で wget
2019/01/10(木) 11:40:29.86ID:DS8wsvUQ0
wgetが入っていればwget、curlが入っていればcurl
両方入っているなら、ファイルにしたいときはwget、出力結果を見たいときはcurl
2019/01/10(木) 16:56:41.32ID:jhx89QXs0
PowerShell では、Invoke-WebRequest のalias が、curl, wget

get-alias (gal) で表示できる
2019/01/10(木) 18:31:34.76ID:yVo/NDAD0
>>900
え、それつまり
$ curl ...
としたときのオプションは実はcurlのじゃなくて
Invoke-WebRequestに向けたオプションってこと?
そんなに互換性があるオプション体系だとは思わないのだけど
なぜエイリアスにしてあるんだろう……。
2019/01/10(木) 20:31:11.75ID:UUY7OixDM
呼ばれたときの名前によって処理を切り替えてるんじゃないの?知らんけど
2019/01/10(木) 22:34:40.34ID:qJAnpZ0RM
cURL以外使わん
2019/01/11(金) 03:35:07.12ID:tAdCcMWb0
bashで「=」という文字をコマンドにすることってできますかね。
「=」を「bc -l <<<」に割り当てて
$ = '4 / 5.1'
みたいな簡易電卓として使いたいなと思ったんだけど
alias =='bc -l <<<'やfunction = { bc -l <<< "$1" }はダメ……。
一応GNU Bashの「コマンドに使っていい文字」ではあるんだけど、使えない
2019/01/11(金) 05:36:31.36ID:YPYEBq870
=というファイル名のシェルスクリプト書いたら?
bashもいらんし

#!/bin/sh
echo "$@" | bc -l
2019/01/11(金) 08:51:55.60ID:EZ88NWNa0
function = { bc -l <<< "$1"; } ってすればできる(セミコロンが必要)
2019/01/14(月) 22:03:31.41ID:s6eFaywu0
>>906
ありがとう。
2019/01/15(火) 01:10:29.39ID:ejrN1XYw0
シェルスクリプトの練習になるオススメサイトありますか?
2019/01/15(火) 04:03:33.32ID:XDACXjEE0
水泳の練習になるオススメサイトありますか?
そう聞かれたらなんて答える?
2019/01/15(火) 07:25:22.93ID:MVbWnd0w0
いけずな野郎だな

お題があってそれを解くっていうのを練習と呼ぶなら
paizaあたりがシェルスクリプトも受け付けてたかも
2019/01/15(火) 07:38:45.50ID:1yCDbXwJ0
自分の作りたいもん作れよ、それ以上効率の良い学習方法はない
2019/01/15(火) 07:52:39.97ID:omEovS4H0
作りたいもの作れる環境がいい
2019/01/15(火) 09:04:11.62ID:ejrN1XYw0
どうもありがとうございます!
2019/01/15(火) 18:52:38.58ID:TWtv3hHM6
今からシェルスクリプトに手を出すんならPOSIX 2017の規格文書とかが
なんと無償で公開されてるので非常にやりやすいと思うよ。
GNUの日本語訳されたマニュアルでもいいし、少なくともドキュメントとしては
今は過去一番に恵まれた時代だと感じている。
915デフォルトの名無しさん (ワッチョイ ce02-H432)
垢版 |
2019/01/16(水) 17:58:43.79ID:ECRqnYoc0
一応この板にもお題スレあるけどね。
この頃過疎ってるかな。
2019/01/18(金) 08:45:17.67ID:XZjr/At96
シェルっていうかAWKのことなんですけど
今の時代に「AWKを256倍使うための本」って読んでためになりますか。
それこそFORTRAN66向けの解説書は最低でもFortran 90/95あたりを使う現在では
ほとんど役に立ちませんよね。
ですがAWKは昔からほとんど仕様が変わっていないので、
古い書籍でも役立ちそうではあります。
2019/01/18(金) 09:04:38.86ID:vsGuf730a
その本は知らんがawkは使える
2019/01/18(金) 12:00:20.35ID:hbAtvXtm0
>>916
スレチ
あるなら嫁
100円以上出す価値はない
2019/01/19(土) 01:03:50.64ID:0IErEZcU0
gawk(4以降)を使わないなら昔のawk本で勉強してもいいと思う。
2019/01/19(土) 02:01:46.56ID:fE346DRA0
256本って、役に立つことも書いてあるネタ本だろう?
勉強ってw
2019/01/19(土) 07:54:11.84ID:AOD6Gi8l0
「256倍」のAWKって,POSIX awkともちょっと違うんだよねw
だからあんまり真に受けないほうがいい
922デフォルトの名無しさん (ワッチョイ 09c5-VA2m)
垢版 |
2019/01/19(土) 20:03:41.30ID:AuMD8hxP0
真にうけるの意味を知らんバカ、笑う
2019/01/19(土) 23:00:56.72ID:Kq2NO2td0
>>922
そういうしょうもない言いがかりでマウント取りたがる奴のほうが
今の時代みっともないと笑われがちだけどね
2019/01/19(土) 23:07:49.10ID:+IqL7b8U0
>>923
>>923
925デフォルトの名無しさん (ワッチョイ 09c5-VA2m)
垢版 |
2019/01/19(土) 23:50:22.30ID:AuMD8hxP0
言いがかりの意味を知らんバカ、ガチ
926デフォルトの名無しさん (ワッチョイ 09c5-VA2m)
垢版 |
2019/01/19(土) 23:51:10.14ID:AuMD8hxP0
てかバカてなんでシェルだとどおにかなると思っとるん?
2019/01/20(日) 02:31:28.62ID:2YimV45u0
↑意味不明なことを言い出し始めたぞ?
2019/01/20(日) 06:00:57.22ID:mVpLWWyp0
5ch とかで○○の意味ガーとか言う奴はアスペか基地外だから放置しとけ
2019/01/20(日) 09:22:33.90ID:yjbEV8Owa
ようやく俺と同じ意見の奴を5chで見つけた
930デフォルトの名無しさん (ワッチョイ 09c5-VA2m)
垢版 |
2019/01/20(日) 18:32:53.82ID:wKV5+GB/0
バカ戸惑っとるやんw
931デフォルトの名無しさん (ワッチョイ 09c5-VA2m)
垢版 |
2019/01/20(日) 19:44:46.86ID:wKV5+GB/0
シェルは簡単やけどシェルがおまえバカのを補える訳とちゃうでw
2019/01/20(日) 21:42:45.99ID:EDhkDxLO0
シェルスクリプト程難しいプログラミング言語も珍しい
933デフォルトの名無しさん (ワッチョイ 09c5-VA2m)
垢版 |
2019/01/20(日) 22:05:16.75ID:wKV5+GB/0
いまだにシェルのことシェルスクリプトと言い張るバカおるんやなw
934デフォルトの名無しさん (ワッチョイ 9b02-7XZ4)
垢版 |
2019/01/21(月) 09:59:58.31ID:+0V9hUvv0
シェルスクリプトと言うからおかしくなるんであって
バッチプログラムと言った方が良くない?
スクリプトと言うほど大袈裟でもないんだけどね
2019/01/21(月) 10:16:19.43ID:J1WbOjYrM
scriptが台本のことだと知っていれば、シェルスクリプトこそ正当なスクリプトだろ。
そのあとperlスクリプトとか呼ばれてあの手の言語がスクリプト言語に分類され、
ただのインタプリタ系プログラムまでスクリプトに含められてしまった。
2019/01/21(月) 10:51:13.07ID:uncS2Ppy0
>>935
そんなこと言ったら「プログラム」もおかしいよね
プログラムは式次第って意味だから「関数型プログラミング言語」なんて意味が通らない
式次第って意味と乖離が少なかったのはそれこそFORTRANとかだよね。

……って良い出したらキリがないから、別に「Pyhtonスクリプト」と呼んでもいいんじゃね?
2019/01/21(月) 10:54:29.54ID:J1WbOjYrM
そうだね
2019/01/21(月) 11:39:25.83ID:kN5K6Fst0
script kitty
https://i.imgur.com/oMseW2P_d.jpg
2019/01/21(月) 12:26:30.35ID:DqxQvGU+0
>>936
> プログラムは式次第って意味だから

プログラムは運動会のプログラムと一緒で
実行計画だろ?
2019/01/21(月) 12:40:07.37ID:uncS2Ppy0
その実行計画を「式次第」って言うんじゃね?
運動会ではあまり使われないけど
卒業式のプログラムは「式次第」って呼ばれるじゃん。
2019/01/21(月) 12:41:28.01ID:uncS2Ppy0
移植可能なMakefileについての覚書
The Open Groupによると
The best way to provide portable makefiles is to include all of the rules needed in the makefile itself.
The rules provided use only features provided by other parts of this volume of POSIX.1-2017.
The default rules include rules for optional commands in this volume of POSIX.1-2017.
Only rules pertaining to commands that are provided are needed in an implementation's default set.
2019/01/21(月) 13:20:33.70ID:DqxQvGU+0
実行計画のうち特に式典に用いられるのが式次第だろ
式じゃないんだから、単に実行計画で良い
2019/01/21(月) 13:27:38.12ID:kW4uGJLza
知ってんだよォォ
国語の教師かオメーはよォォ
944デフォルトの名無しさん (アウアウウー Sa15-4KIe)
垢版 |
2019/01/21(月) 13:40:03.75ID:chW+Guj1a
>>938
(*´Д`)ハァハァ
2019/01/21(月) 21:36:42.73ID:Z7YPhckpM
>>944
キメーんだよ、クソ人間が
カタカタカタ…
946デフォルトの名無しさん (アウアウウー Sa15-4KIe)
垢版 |
2019/01/22(火) 09:17:01.15ID:J1mDHp9Ya
にゃ
2019/01/22(火) 10:55:23.70ID:L0BlvLx7r
国語の時間はここまでっ!
948デフォルトの名無しさん (オッペケ Sr1d-+JtR)
垢版 |
2019/01/22(火) 12:18:47.44ID:aO6rlwOPr
よーし!今から保健体育の時間な!
949デフォルトの名無しさん (アウアウウー Sa15-4KIe)
垢版 |
2019/01/22(火) 12:32:24.54ID:J1mDHp9Ya
猫のスレができたと聞いて
2019/01/26(土) 17:13:20.64ID:VBVSKLLT0
ほかにも動物の名前のコマンドあるかな。
人の名前はあるけど(man)。
2019/01/26(土) 17:35:41.04ID:t83jnK1u0
fox(狐)はないか
2019/01/26(土) 17:37:42.47ID:t83jnK1u0
錦蛇(python)は入れればあるね。
2019/01/26(土) 21:12:00.09ID:dNFr7KCg0
fishとか
2019/01/26(土) 21:46:39.00ID:VBVSKLLT0
fish言おうと思っとったのに
955デフォルトの名無しさん (ワッチョイ 3dc5-hALj)
垢版 |
2019/01/26(土) 21:48:04.51ID:uSJt/X2/0
俺の方が先にfish言おうとしたんやけどね
2019/01/26(土) 21:53:01.10ID:nfFeNMjGa
俺が言おうとしたのに
957デフォルトの名無しさん (ワッチョイ 3dc5-hALj)
垢版 |
2019/01/26(土) 22:09:06.41ID:uSJt/X2/0
fish知名度高すぎやろwwww
2019/01/26(土) 22:11:42.15ID:Ze1S3jEe0
fish って聞くと x68k の fish の方を連想してしまう
959デフォルトの名無しさん (ワッチョイ 3dc5-hALj)
垢版 |
2019/01/26(土) 22:38:03.41ID:uSJt/X2/0
なんやその受け身の人生アピールw
2019/01/27(日) 01:38:33.38ID:z0hosMYm0
fish、イタリア語でPesciペッシ。
ジョジョで覚えたぞ!
2019/01/27(日) 08:33:27.63ID:Erhv9FPi0
namazuはどう?
2019/01/27(日) 09:14:26.94ID:RsUGZloC0
なんでcatが出てこんのや
2019/01/27(日) 09:16:57.86ID:rwuNPA7J0
950に[ほかにも]とあるから猫は既出でしょ
2019/01/27(日) 17:29:49.17ID:xlSzZYyn0
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_23
ここのNoteに「〈記号〉=〈値〉の形の構文の挙動は未定義である。Kornシェル用いられている」
とあるのですが実際にKornシェルで↑この形の構文はどういう意味なのでしょうか。
965デフォルトの名無しさん (ワッチョイ 415d-FWM4)
垢版 |
2019/01/28(月) 23:54:39.66ID:WFNfoV5R0
あげ
966デフォルトの名無しさん (ワッチョイ 415d-FWM4)
垢版 |
2019/01/28(月) 23:55:04.01ID:WFNfoV5R0
シェルでコマンドの出力結果を(lsなど)データベースに入れたいのですが
どのようにすればいいかわかりますか?
できればその時のIpアドレスも一緒にいれればいいのですが
普通にテキストに入れるには
できないのでしょうか
ディレクトリも入れれば最高です
dbはsqlite3でフィールドはディレクトリ内容とディレクトリの2フィールドにいれたいのです
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況