シェルスクリプト総合 その29
■ このスレッドは過去ログ倉庫に格納されています
シェルスクリプト・ バッチファイル・コマンドプロシージャなどの シェルで使われてる言語に関する総合スレッドです。 全般 ・荒しは無視しましょう。 ・丁寧な姿勢を心掛けましょう。 ・ネチケット(死語)を意識しましょう。 関連スレ 【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net https://mevius.5ch.net/test/read.cgi/tech/1489207631/ 前スレ シェルスクリプト総合 その28 https://mevius.5ch.net/test/read.cgi/tech/1532397676/ 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の正規表現だけでやりたい なんでそんなに正規表現に拘るのかわからん #!/bin/sh while IFS= read -r line; do echo $line done win10にMSYS2入れてみた bashバッチ作ってcd `dirname $0`書いて実行したら Cドライブだと動くのに、Dドライブで実行すると動かん あとなぜかlookの検索が効かない dirname コマンドや、環境変数、$0 の意味でも調べれば? awkで、リダイレクト先のファイルが存在するかどうかの判別は、 どうやって書いたら良いですか? 予めgetlineが返す値チェックしておけばいいんじゃない getlineは入力だよな?出力の話してるんじゃないの? シェルスクリプトでもええんか? シェルスクリプトのスレだし file_name="a.txt" if [ -f "$file_name" ] then exit 1 fi 上のように、ファイルがあるかどうかを、BEGIN { } に書けば? 終了コード0 は正常終了で、 1以上の終了コードは、異常終了 >>19 awkスクリプトの中だけで完結したいんです。具体的には getline a < "/dev/stdin"; fn = a".txt" とファイル名を作ったあとに、そのファイルがあるかどうかを確認したいんです。 ファイルがあったら処理終了、無ければ以後の処理をそのファイルにリダイレクトする処理に進む、という感じです。 awkコマンドの出力をリダイレクトでファイルへにしてたら、awkコマンド実行時にはすでにファイルは作られてるんじゃね。シェルによるかもしれんが つーかさー、awkなんだからシェルスクリプトではないよな すいません、awkスレ無いと勘違いしてました。awkスレで聞いてみます。ありがとうございました。 もう1年も書き込みがないのか ヤマトならイスカンダルまで行って帰ってくれるぞ ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる