■ このスレッドは過去ログ倉庫に格納されています
シェルスクリプト総合 その29
- 1 :デフォルトの名無しさん:2018/08/25(土) 19:49:00.43 ID:9FNycoly.net
- シェルスクリプト・ バッチファイル・コマンドプロシージャなどの
シェルで使われてる言語に関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
関連スレ
【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1489207631/
前スレ シェルスクリプト総合 その28
https://mevius.5ch.net/test/read.cgi/tech/1532397676/
- 6 :デフォルトの名無しさん:2018/12/23(日) 08:00:40.84 ID:W0WvAA71.net
- sedだと簡単に動く一文字以上の半角スペースを一文字スペースに置換するコレ
echo "$strings" | sed -E 's/ {1,}/ /g'
bashだとどーしてもうまく動かず次のように[]で囲ってやるとなんとか全連続スペースじゃなく一部
だけが置換できた。
${strings// [ \{1,\}]/ }
それ以上どうしようもなかったので、次のような関数を作った
function Rep2One(){
local str=$1
local chr=$2
while :
do
str="${str//$chr$chr/$chr}"
if [[ ! $str =~ $chr$chr ]]; then
break
fi
done
echo "$str"
}
srings=`Rep2One "$strings" " "`
これで任意の2文字以上の連続を1文字に置換できたが、
sedみたいに一発でかっこよく記述できない?
至る所でbashからsedやgrep起動してたんだが、
bashのなかでできることはbashだけでやった方が大分速いことがわかったんで
なんとかbashの正規表現だけでやりたい
- 7 :6:2018/12/23(日) 08:07:43.66 ID:W0WvAA71.net
- すみません前スレに移動します
- 8 :デフォルトの名無しさん:2018/12/23(日) 08:14:13.74 ID:yUjQiXy1.net
- なんでそんなに正規表現に拘るのかわからん
#!/bin/sh
while IFS= read -r line; do
echo $line
done
- 9 :デフォルトの名無しさん:2019/01/06(日) 10:27:56.70 ID:vAbXyCSc.net
- / +/ /
でよくね?
- 10 :デフォルトの名無しさん:2019/01/07(月) 03:14:23.39 ID:Z5VMKaqE.net
- ご覧ください。
https://mevius.5ch.net/test/read.cgi/tech/1537584801/852
- 11 :デフォルトの名無しさん:2019/02/08(金) 12:14:05.84 ID:OGIJJ+v/.net
- age
- 12 :デフォルトの名無しさん:2019/02/08(金) 15:46:28.45 ID:mhRJFjKM.net
- win10にMSYS2入れてみた
bashバッチ作ってcd `dirname $0`書いて実行したら
Cドライブだと動くのに、Dドライブで実行すると動かん
あとなぜかlookの検索が効かない
- 13 :デフォルトの名無しさん:2019/02/08(金) 22:08:55.85 ID:VZqJ7QJN.net
- なんで同じ番号のスレが3つもあるの?
- 14 :デフォルトの名無しさん:2019/02/08(金) 23:25:25.51 ID:0dQnaPPd.net
- dirname コマンドや、環境変数、$0 の意味でも調べれば?
- 15 :デフォルトの名無しさん:2019/02/22(金) 19:14:15.85 ID:iyc3D5GM.net
- awkで、リダイレクト先のファイルが存在するかどうかの判別は、
どうやって書いたら良いですか?
- 16 :デフォルトの名無しさん:2019/02/23(土) 00:38:49.67 ID:KVnLTHAG.net
- 予めgetlineが返す値チェックしておけばいいんじゃない
- 17 :デフォルトの名無しさん:2019/02/23(土) 13:41:37.65 ID:9pS68leH.net
- getlineは入力だよな?出力の話してるんじゃないの?
- 18 :デフォルトの名無しさん:2019/02/23(土) 13:56:04.31 ID:VtbudUFf.net
- シェルスクリプトでもええんか?
シェルスクリプトのスレだし
- 19 :デフォルトの名無しさん:2019/02/23(土) 14:45:51.45 ID:DQY5g4De.net
- file_name="a.txt"
if [ -f "$file_name" ]
then
exit 1
fi
上のように、ファイルがあるかどうかを、BEGIN { } に書けば?
終了コード0 は正常終了で、
1以上の終了コードは、異常終了
- 20 :デフォルトの名無しさん:2019/02/23(土) 17:02:38.24 ID:Y0E0nwid.net
- >>19
awkスクリプトの中だけで完結したいんです。具体的には
getline a < "/dev/stdin";
fn = a".txt"
とファイル名を作ったあとに、そのファイルがあるかどうかを確認したいんです。
ファイルがあったら処理終了、無ければ以後の処理をそのファイルにリダイレクトする処理に進む、という感じです。
- 21 :デフォルトの名無しさん:2019/02/23(土) 17:21:30.63 ID:jjr+o1Vg.net
- awkコマンドの出力をリダイレクトでファイルへにしてたら、awkコマンド実行時にはすでにファイルは作られてるんじゃね。シェルによるかもしれんが
- 22 :デフォルトの名無しさん:2019/02/23(土) 17:32:34.95 ID:YEloELhc.net
- つーかさー、awkなんだからシェルスクリプトではないよな
- 23 :デフォルトの名無しさん:2019/02/23(土) 17:39:27.76 ID:Y0E0nwid.net
- すいません、awkスレ無いと勘違いしてました。awkスレで聞いてみます。ありがとうございました。
- 24 :デフォルトの名無しさん:2019/05/04(土) 11:59:20.98 ID:ml9ghwy4.net
- 保守必要?
- 25 :デフォルトの名無しさん:2020/05/24(日) 14:41:24.17 ID:FoupM25w.net
- もう1年も書き込みがないのか
ヤマトならイスカンダルまで行って帰ってくれるぞ
- 26 :デフォルトの名無しさん:2020/05/24(日) 14:47:39 ID:Y1ZXEm/L.net
- >>25
最新スレはこっちな
シェルスクリプト総合 その33
https://mevius.5ch.net/test/read.cgi/tech/1584893550/
- 27 :デフォルトの名無しさん:2020/06/23(火) 21:29:06 ID:5POR+uA5.net
- ここは放置プレイスレ
総レス数 27
8 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★