- 1 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 22:56:36.869 ID:fG/1PFceM
- #文字列.txt
ほげ3ほげ2ほげ
ぴ5よぴよぴよ
てす10てすてすこんな感じの文字列があるとして
この中の数字を一つ一つ抽出して、それを任意の関数(ここでは引数を2倍にする関数BAIZOU)に渡して出てきた値に置換したい結果は↓みたいな
ほげ6ほげ4ほげ
ぴ10よぴよぴよ
てす20てすてす文字列にある数字の個数は毎回ランダム
どうすればいい? - 2 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 22:57:24.349 ID:fG/1PFceM
- いろいろやってみたけどforループで一部分だけ置換できるのが限界
function BAIZOU {
expr($1 \* 2)
}array=`cat “文字列.txt” | grep -oP '[0-9]*'`
for i in ${array[@]}
do
cat “文字列.txt” | sed "s/$1/$(BAIZOU $i)/g"
done - 3 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 22:57:29.249 ID:fG/1PFceM
- 助けて
- 4 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 22:57:52.039 ID:cvVE7mRA0
- シェルスクリプトでやる理由は?
- 7 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 23:03:23.590 ID:fG/1PFceM
- >>4
1番しっくりくるから - 5 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 22:58:33.613 ID:6rHoj9LH0
- 55は110?1010?
- 9 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 23:03:39.002 ID:fG/1PFceM
- >>5
そうだね - 6 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 23:02:08.877 ID:7+3VESWW0
- シェルスクリプトからPythonで書いたプログラムを呼べば解決
- 11 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 23:04:58.717 ID:fG/1PFceM
- >>6
やっぱPythonに頼るしかないのかー
プロジェクトで上のコード以外も全てシェルで作っちゃったからできれば統一したかったな - 8 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 23:03:38.391 ID:PKOKkz8v0
- 俺の仕事だったら真面目に書くけどシェルスクリプト嫌いだからなぁ~(ミサワ顔)
- 12 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 23:06:07.053 ID:fG/1PFceM
- >>8
そこをなんとか~ - 10 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 23:03:55.454 ID:cgG21xrYa
- これをシェルスクリプトでやるのは縛りプレイだわ
- 14 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 23:07:14.606 ID:fG/1PFceM
- >>10
マジかよ… - 13 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 23:07:10.370 ID:PKOKkz8v0
- awk使お?
awkならセーフだよあれはギリシェルスクリプト - 17 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 23:11:42.664 ID:fG/1PFceM
- >>13
ググったけどawkって連想配列もできるのか
どうやるかはもう少し勉強しなきゃだけど希望が見えてきた - 15 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 23:10:40.389 ID:HRdA60tj0
- まず「UNIXという考え方」を読んでこい
- 18 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 23:14:37.744 ID:fG/1PFceM
- >>15
なんか小さなプログラムとか出てきた
やろうとしてることはシェルの目的に反するってことか - 21 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 23:16:56.600 ID:HRdA60tj0
- >>18
良書だから暇あればお勧めする基本は適材適所の道具を使う
そしてよりシンプルな方法の組み合わせで対応する
あとで面倒なことにならないように - 25 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 23:21:40.092 ID:fG/1PFceM
- >>21
サンクスそうするわ>>22
たぶんない
仕事とかではないしあんま難しいことはできない - 27 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 23:22:55.378 ID:HRdA60tj0
- >>25
難しいことっていうか
問題をきちんと解決しておいたほうが後が楽じゃねって話
仮にこれが小手先でうまくクリアできたとしても、さらに追加の要求が出たときに破綻するから - 16 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 23:10:52.072 ID:VLs8RALN0
- 数字は半角、その他は全角?
入力の行長は固定?不定?
スペースは入るの? - 19 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 23:16:10.181 ID:fG/1PFceM
- >>16
数字の間にはスペースは入らない
数字の横なら入るかも
数字以外は英語とかも、もちろん半角と全角も混じる
行長も不定 - 22 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 23:17:50.254 ID:HRdA60tj0
- >>19
構文解析のプログラム組んだことある? - 20 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 23:16:35.556 ID:fG/1PFceM
- 数字自体は半角
- 26 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 23:22:24.502 ID:7+3VESWW0
- awkだってシェルスクリプトじゃなくて外部のプログラムじゃん?
そりゃあPythonよりはawkの方が最初からインストールされてる可能性は高いけど
- 28 名前:ひみつの名無しさん 投稿日時:2020/08/10(月) 23:23:05.773 ID:NlVRX9b0a
- uwscとかでもできそう
コメント