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


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

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



1 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/05/03(木) 17:54:23.25 .net]
シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)もしくはPOSIX準拠の互換シェルがデフォルトです。
 bash/zsh/ksh/ash/dash/yash/poshなどの専用機能に依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
 FreeBSDユーザは/bin/shの正体がashなので注意。
・POSIXについてのリンクは https://en.wikipedia.org/wiki/POSIX にまとめられています
 最新の仕様はこちらへ pubs.opengroup.org/onlinepubs/9699919799/
 (左上の「Shell & Utilities」 から参照することができます。)
・v7 shに一番近くて、現役(?)のshは、OpenSolaris由来のheirloom sh。
  src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/
  heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
 (理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
 正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
 「そういうのはperl使いましょう」と回答するのはやめましょう。
 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
 質問に対して問題が間違ってるといちゃもんをつけるのもやめましょう
前スレ シェルスクリプト総合 その26
https://mevius.5ch.net/test/read.cgi/unix/1489979246/

802 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/26(火) 22:26:52.66 .net]
まあなんか知らんがもっとドキュメントに当たったらって気がする

803 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/27(水) 00:54:07.84 .net]
jqについて教えてください。

https://ideone.com/SZlhR4

やり方が分からないので、以下のようにとりあえすyenを指定したら並び順が思ったようになりませんでした。
$ cat kudamono.json | jq -r '.genre_name, .list[].name, .list[].hinshu_list[].yen'

くだもの
りんご
みかん
いちご
180
500
200
50
63
300
null
null
null

続く

804 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/27(水) 00:54:30.18 .net]
以下のように標準出力に出す方法を教えてください。

くだもの
りんご
ふじ
180
サンふじ
500
つがる
200
みかん
きんかん
50
いよかん
63
せとみ
300
いちご
あまおう
null
ひのしずく
null
とちおとめ
null

805 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/27(水) 01:36:22.49 .net]
>>772
別の人ですよー。

806 名前:竄閧スいことを思い出したので、書いてみたの♪ []
[ここ壊れてます]

807 名前:名無しさん@お腹いっぱい。 [2018/06/27(水) 03:13:21.88 .net]
>>774-775
. | .genre_name, (.list[] | .name, (.hinshu_list[] | .hinshu, .yen))

https://stedolan.github.io/jq/tutorial/ https://stedolan.github.io/jq/manual/ 見つつ https://jqplay.org で試した
jq初めての俺でもすぐできたじゃねーか
まじめにやれ

808 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/27(水) 07:24:03.91 .net]
>>777
どうもありがとうございます!
カッコを使うといいんですね

809 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/28(木) 16:24:57.87 .net]
dashで動くシェルスクリプトってPOSIX準拠のシェルスクリプトだと思って問題ない?

810 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/28(木) 17:11:46.11 .net]
そいつから呼ぶコマンドもPOSIXじゃないとな。



811 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/29(金) 00:29:23.70 .net]
dashはPOSIX準拠である
だからPOSIX準拠のコードはdashで期待どおり動く
だけどdash専用のコードはPOSIX準拠ではない

812 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/29(金) 01:00:02.18 .net]
kshのposixモードがかな。POSIX仕様の元となった自負があるだろうからposixモードもちゃんとしてそう

813 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/30(土) 22:10:41.02 .net]
あの,すごく初歩的なことだと思うのですが,
Excelなどのように隣のセルの値を参照して現在のセルの値を計算するという手法を
シェルスクリプトで行うにはどうすればいいでしょうか。
具体的には,参照した値をaとして,(1-sin^2(a))/2^aを計算したいです。
Excelだと,A列に値を入力していき,B1セルに「(1-(SIN(A1))^2)/2^A1」と入力した後ドラッグすればいいのですが……。

814 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/30(土) 22:52:18.06 .net]
a=値
echo "(1-s($a)^2)/2^$a" | bc -l
とか?

815 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/01(日) 20:12:26.02 .net]
cat <<. | xargs -I @ echo (1-s(@)^2)/2^@ | bc -l
3
44
-6
.
こんなのでどう?

816 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:00:06.28 .net]
cat と echo と print の違いが分からない
あと、print と printfの違いも
教えて

817 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:00:38.56 .net]
less と moreも

818 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:07:32.55 .net]
manすりゃいいんじゃないの

819 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:15:59.23 .net]
cat と echo,printf は全然違う。主に出力するソースが(ゆえにパイプで入力受ける受けないとなり?)
echo と printf は、書式が指定できるかというか、コマンド由来とC由来かな
printって?awk内のならprintはechoのようなもんかな(Ubuntuには print がコマンドであるけど Mailcap とかナニそれな普通じゃないのだな)

820 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:19:26.23 .net]
ググったらechoは改行されてしまうけどprintfは自分で\nしないと改行されないってあった



821 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:23:46.00 .net]
それらの違いが分からないのは使ってないからだろ
使ってないなら知る必要もないし知ろうとも思わない
自作自演かな?

822 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:26:27.85 .net]
>>791
宿題

823 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:27:23.78 .net]
コマンド由来とC由来ゆうてるやんw
printf(1) は printf(3) と同じと思えば不思議ではないだろう。echo も -n で改行しないようにもできるけどイレギュラー、コマンド由来だからな

>>791
まあ、なんの目的で聞いてるのかさっぱりわからんくはあるな。なんの自作自演なのかさっぱりだけど

824 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:27:58.46 .net]
>>792
宿題かああ。程度が低いな。高校でとかか?

825 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:28:13.36 .net]
>>792
あぁ…

826 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:39:06.49 .net]
>コマンド由来
コマンドはつねに改行されるの?

827 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:40:31.96 .net]
あと、printfのfって何?
f付けたのはcが最初?
fって?

828 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:44:50.94 .net]
少しは自分で調べろよ

829 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:47:13.07 .net]
調べたから改行の事分かったんだけど?

830 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:47:50.56 .net]
もっと自分で調べろよ



831 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:49:35.35 .net]
じゃぁfだけヒント教えて

832 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:50:22.47 .net]
それな

833 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:50:43.52 .net]
>>796,797
コマンドで何か出力するのに「改行しない」方が少ないだろうという。echo "Hello"が改行しなかったら

834 名前:プロンプトが続いてとか。改行した方がその機会が多いので省けるだろう
f = フォーマット。printfはCが起源じゃないのかなあ。の前の何かの言語ではprintがあっただろうな(どういうのか知らんけど)

聞く姿勢が小学生低学年並みだな。そろそろ>>798の言うとおり
[]
[ここ壊れてます]

835 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 14:55:17.35 .net]
>>803
どうもありがとうございました

836 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 15:22:33.69 .net]
礼儀正しいな
少し見直したw

837 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 15:24:56.72 .net]
manとinfoどっち使ってる?
infoは文中から別のページに飛べるから便利そうだけどウェブブラウザのように戻る進むボタンがあるわけでも無いし全部文字だけだから現在位置が分からなくなるからmanがいいと思うんだけどどう?

838 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 15:25:43.12 .net]
なんか最近ほんとこういうアンケートみたいなの増えたな
どっかから流れてきたか?

839 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 15:27:19.76 .net]
この質問は乾燥機かせてほしいだけだから

840 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 15:29:11.19 .net]
UNIX板だからmanだな



841 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 15:31:13.31 .net]
何を乾燥させたいのかしばらく悩んだ

842 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 18:41:01.45 .net]
「乾燥機貸して」ってアンジャッシュのネタにあったなそういや

843 名前:名無しさん@お腹いっぱい。 [2018/07/02(月) 19:09:02.32 .net]
man manて口で言うと恥ずかしいからinfo

844 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 19:35:17.38 .net]
rcsのco(1)を

845 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 21:56:08.50 .net]
tinfo

846 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/02(月) 22:32:14.11 .net]
そのあたりのネタはもう聞き飽きた

847 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/03(火) 00:21:24.80 .net]
ディレクトリの中の拡張子がm2tsのファイル全てをtsselectというコマンドに投げてその標準出力をひとつのファイルに追記で書き込みたいんですが、その際、ファイル名も一緒に書き込みたいです。
どうやってファイル名を取得するんでしょうか?

$ tsselect *.m2ts > ana.log

848 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/03(火) 00:43:49.80 .net]
1行で書けなかったので、複数行に分けてfor分を使いました。

849 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/03(火) 01:01:05.23 .net]
こんなん?
for i in *.m2ts; do echo $i >>ana.log; tsselect $i >>ana.log; done

850 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 07:39:11.34 .net]
近頃のどこか(このスレかも)で,
「fgrepはgrepより遅い」というような話を耳にしたんですが,ほんとうですか?
手元のgrepで試したところ,ほとんど有意な差はありませんでしたが……。



851 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 08:10:45.64 .net]
それぞれ独自バイナリだった昔の話な。
あとgrepよりegrepの方が速かったんで、
今でも手はegrepを優先して打っちゃうけどな。

852 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 08:43:22.98 .net]
いや独自バイナリだった頃もfgrepの方が速かったような。
grepだけ非決定性オートマトンで遅い的な。

853 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 15:23:44.48 .net]
ファイルの一括リネームで
$ find . -name "*X*" | while read F; do mv $F ${F/X/Y}; done
だとXXXがYXXになるんですけどYYYにするには繰り返さなきゃいけないんですかね?

854 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 16:18:50.48 .net]
If pattern begins with /, all matches of pattern are replaced with string.

855 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 16:22:26.78 .net]
日本語で書いてくれないとわかりません
できれば修正したコマンドを書いてください

856 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 16:25:40.84 .net]
お断りします

857 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 16:27:15.37 .net]
断る理由とは?

858 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 16:29:57.71 .net]
ひな鳥に餌を上げるのはひな鳥がかわいいからだ
なんかこのひな鳥うざいって思ったら餌は与えない

859 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 16:31:49.67 .net]
可愛く思われる質問の仕方でもあったんですかね

860 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 16:34:15.63 .net]
とりあえず「sh 変数展開」あたりでggってからここに来



861 名前:
それで分からなきゃどこかの暇人が餌与えてくれるまでずっと待ってな
[]
[ここ壊れてます]

862 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 16:35:48.08 .net]
ありがとうございました

863 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 16:54:10.40 .net]
もう来んなよ

864 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 18:24:31.29 .net]
すみません
ワードとかに出来る~$で始まるファイルを一括で消したいのですがどうすればいいですか。
find ./ -name "~$*" -exec rm -rf {} \;
これだと上手くいかないです。
find ./ -name "~\$*" -exec rm -rf {} \;
エスケープしてもダメです。
find ./ -name "~*" -exec rm -rf {} \;
これだと上手くいきますが$も指定するためにはどうすればいいですか。

865 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 18:27:42.16 .net]
シングルクォート使っとけばぁ

866 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 18:30:53.83 .net]
>>833
上手くいかないです
$ find . -name ~'$'*
Unknown user: $*.

$ find . -name "~'$'*"
Illegal variable name.

$ find . -name ~"$"*
Illegal variable name.

$ find . -name '~"$"*'
何も出力されない

867 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 18:41:11.43 .net]
自己解決
bashにしたら\で普通にエスケープできました
find . -name "~\$*"
なんでcsh使ってたんだろ

868 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 18:44:18.71 .net]
csh使ってたならプロンプト$にすんなよ紛らわしい

869 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 18:46:56.81 .net]
cshだと%でしたねすみません
% find . -name "~\$*"

870 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 20:48:13.14 .net]
なんで-rつけてんねん



871 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 20:56:00.21 .net]
ファイルフォルダ関係なく消したいからフォルダがないとわかっていても付けてる

872 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 21:12:02.88 .net]
\; より + かな。forkの遅いCygwinでは特に。

873 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 21:21:14.22 .net]
最後以外の改行を削除する単純で可搬な方法を探しています。
私が現在使っている方法は
cat <<. | tr -d '\n' | printf '%s\n' "$(cat)"
a
bbb
cc
.
です。これは可搬性は抜群ですが、冗長すぎると感じています。
できれば一つのコマンド(sedとか?)で済ませたいです。よろしくお願いします。

874 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 21:32:09.95 .net]
awkで

875 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 21:34:23.01 .net]
フォルダっつーかディレクトリ

876 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 21:37:25.99 .net]
同じだろ

877 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 21:40:52.56 .net]
>>841

sed ':l;N;s/\n//;bl'

とかかな。// を /,/ にすると、1行CSVに出来る。

878 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 22:22:07.40 .net]
>>845
ありがとうございます!
すごいですね……。:lってラベル付けでしたっけ。

879 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/04(水) 23:00:04.93 .net]
>>841
cat <<. | { tr -d '\n'; echo; }
a
bbb
cc
.

880 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 09:36:25.04 .net]
Mac付属のsedじゃうまく行かなかった、ってお呼びじゃないか
最近のBSD sedはどうかわからないけど



881 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 10:23:41.12 .net]
>>848
え? そうなの?
OS Xを持ってないので知らんが Busyboxでも行けるくらいの可搬性はあるぜ?
全部POSIXで規定されてる命令だし。

882 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 12:53:17.75 .net]
macOSだけでなくBSDでだめっぽい。BSDでだめというか、GNU sedでなら動くか

883 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 14:18:26.92 .net]
主にパターンスペースに対して処理した直後にどうするってとこの違いかな。他ではBSDでもmacOSとOpenBSDでは行を処理しなかった場合どうするがちょっと動作が違ったり、いろいろ鬼門だなsedは

sed '$!{H;d;};${H;g;s/\n//g;}'
で、いちおう、sedもGNU sedものようだけど、ゴテっとはしてんな

884 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 14:50:09.34 .net]
>>845も結局改行を削除しているだけ&最後の改行はsedの勝手に付けるだけなので、>>847の方がシンプルでこっちの方がって感じだな

885 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 15:36:04.46 .net]
>>845のMacやBSD向け変種でけた
sed -e :l -e 'N;s/\n//;$p;bl'

886 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 15:51:48.45 .net]
おおっ
ラベルを別にすれば/しなきゃなのか
$はそこに入れるのか、なるほど
GNU sedではそれだと.

887 名前:..オプションで変えられるかな
くせが強いw
[]
[ここ壊れてます]

888 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 17:34:11.18 .net]
教訓。移植性を重視するならsedで変なことするな。普通の正規表現だけ使え

889 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 18:25:50.29 .net]
昔はもっと酷かったんだろうな #移植性
sedだけじゃなくてgrepとかも。

890 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 18:33:28.39 .net]
>>856
昔は一つしかなかったから移植性よかったよ。
GNUが台無しにした。



891 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 18:41:45.18 .net]
ぐぬぅ

892 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 22:10:39.00 .net]
sed で可搬性を考えると、セミコロンで分ける方法はちょっとあやしいから、
愚直に -e で分けるしか無いのかも知れない、短く書けないけどw

それはさておき、sed の「無限ループに N を入れる」って、趣があると思うんだよね。
C で「ファイルを while の条件文で fgets() が EOF になるまで読み込む処理」に近いというか。

893 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 22:32:39.96 .net]
>>855
>普通の正規表現だけ使え
というより、一行単位サイクルで処理しろかな

894 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/05(木) 23:00:24.55 .net]
>>859
溜めに溜めて溜め込んでってイメージしかないなw
そのwhile〜fgets〜で言うなら、中にreallocでどんどこ的な

実際どうなんだろと65Mのファイルで「ちょっと」試したら、使用メモリは増えない(??)けど終わらんぞw

895 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/06(金) 00:57:10.67 .net]
bashのプロセス置換なんですけど、最初のプロセス置換が/dev/fd/63に固定(?)されているのはなにか理由があるんですかね。
bash-4.4$ eval echo $(yes '<(echo) ' | head -n 63)
とやったら/dev/fd/63からデクリメントされていって/dev/fd/5→/dev/fd/3→/dev/fd/64
という謎の変化を経てインクリメントされていくという……。
これ仕様ですかね。

896 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/07(土) 16:45:13.41 .net]
仕様です
63は昔は大きい数字だったのですが
最近は小さくなってしまった

897 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/07(土) 19:05:22.41 .net]
数千行のCSVの値を一個一個指定の条件に沿っているかチェックするにはシェルスクリプトでも出来ますかね?
参考書教えて頂けたら嬉しいです。
それともこういうのは他のスクリプトの方が適してたりしますか?
perlも使える環境ではあります。

898 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/07(土) 19:24:54.18 .net]
>>864
そのチェックが他の行の参照を含まなくて、shellでできるかという質問にawkやsedも含まれているのなら、できる
というか、excelでやったりしないし、最近はpythonでやることが多い

899 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/07(土) 20:21:55.89 .net]
指定の条件によるな。CSVの項目も数値や文字列だけだったらシェルスクリプトだけでもできるだろう

900 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/07(土) 20:52:55.66 .net]
ああ、文字列の中のフィールドセパレータ(,)をフィールドセパレータとして除外というのはしないか。awkも同じかな。やってできないこともないだろうけどめんどくさいな
perlはcsv処理するモジュールを入れてだっけ、pythonは最初から入っているよな



901 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/07(土) 21:04:50.61 .net]
それ以前にCSVのフォーマットによると思う
改行とかカンマとかダブルクォーテーションを含むとかをきちんとやりだすとシェルだけでもできるだろうけどやりたくない

902 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/07/07(土) 23:07:51.61 .net]
またCSV嵐が来てんのか






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

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

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