シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
・「POSIX原理主義」「ユニケージ」「USP研究所」はPOSIXとUnixを曲解し
間違ったシェルスクリプトを広めている宗教です。洗脳されないようにしてください。
前スレ: シェルスクリプト総合 その36
https://mevius.5ch.net/test/read.cgi/tech/1614212414/
関連スレ
・【Bash】Windows Subsystem for Linux【WSL】11
https://mao.5ch.net/test/read.cgi/linux/1627507889/
・Bashでプログラミング [転載禁止](c)2ch.net
https://mao.5ch.net/test/read.cgi/linux/1443885102/
・シェルスクリプト総合 その28
https://mevius.5ch.net/test/read.cgi/unix/1533154936/
・zsh その7
https://mevius.5ch.net/test/read.cgi/unix/1337844883/
・過去UNIXで使われていた ksh というシェルについて
https://mevius.5ch.net/test/read.cgi/unix/1582358403/
・【POSIX】UNIXプログラミング【BSD】 [転載禁止](c)2ch.net
https://mevius.5ch.net/test/read.cgi/unix/1443103705/
・おまえら! shell は何を使っているんですか?
https://mevius.5ch.net/test/read.cgi/unix/1012330865/
探検
シェルスクリプト総合 その37
■ このスレッドは過去ログ倉庫に格納されています
2021/10/05(火) 22:49:30.91ID:KsbWuyFp
307デフォルトの名無しさん
2021/12/14(火) 02:24:03.30ID:qTP7/6ko308デフォルトの名無しさん
2021/12/14(火) 03:14:46.69ID:rn98eftb 面白いと思って書いたの?
309デフォルトの名無しさん
2021/12/14(火) 09:18:10.80ID:/wewuKga name=value
: $(($name = 123))
echo $value
これってPOSIX準拠?
: $(($name = 123))
echo $value
これってPOSIX準拠?
310デフォルトの名無しさん
2021/12/14(火) 15:12:29.97ID:sz49PmUD うん
311デフォルトの名無しさん
2021/12/14(火) 15:31:16.80ID:VTHB4KBI bc使わないで小数の比較演算ってできますか?
RHEL8.0環境で何もインストールしてはいけません縛りの環境を渡されてbc入ってなくて詰んでます。
RHEL8.0環境で何もインストールしてはいけません縛りの環境を渡されてbc入ってなくて詰んでます。
312デフォルトの名無しさん
2021/12/14(火) 15:53:00.42ID:0juEz1uN PerlかPythonははいってんじゃないの?
dnf(yum)用とかで。
dnf(yum)用とかで。
313デフォルトの名無しさん
2021/12/14(火) 15:56:51.63ID:/wewuKga >>310
根拠はありますか?
根拠はありますか?
314デフォルトの名無しさん
2021/12/14(火) 15:56:55.09ID:VTHB4KBI 確かに
pythonで計算することにします
ありがとうございました
pythonで計算することにします
ありがとうございました
315デフォルトの名無しさん
2021/12/14(火) 15:59:09.28ID:/wewuKga316デフォルトの名無しさん
2021/12/14(火) 16:40:48.55ID:sz49PmUD317デフォルトの名無しさん
2021/12/14(火) 17:05:42.29ID:0juEz1uN >>315
bcでそんなことを言えんの?w
bcでそんなことを言えんの?w
318デフォルトの名無しさん
2021/12/14(火) 17:15:47.75ID:vLIDlmgW プログラミング言語を使わずに計算することを考える時点で、既におかしい
319デフォルトの名無しさん
2021/12/14(火) 17:33:58.21ID:/wewuKga320デフォルトの名無しさん
2021/12/14(火) 17:44:30.18ID:sz49PmUD >>319
書いてる
書いてる
321デフォルトの名無しさん
2021/12/14(火) 17:54:50.69ID:sz49PmUD まさか「書いてる」という言質が欲しかったわけじゃないよな
言葉使いからは「いつもの」っぽいけど
書いてると言われても見つけられなさそうだな、パターン的には
言葉使いからは「いつもの」っぽいけど
書いてると言われても見つけられなさそうだな、パターン的には
322デフォルトの名無しさん
2021/12/14(火) 17:57:32.23ID:0juEz1uN323デフォルトの名無しさん
2021/12/14(火) 18:03:51.08ID:0juEz1uN いや、そう使うように書くのはなかなか面倒か。
できなくはないやろけど。w
できなくはないやろけど。w
324デフォルトの名無しさん
2021/12/14(火) 18:04:26.19ID:sz49PmUD Linuxは一貫としてbcはデフォでは入ってないんだな。なんでだろ
LinuxというかGNUがだろけど
LinuxというかGNUがだろけど
325デフォルトの名無しさん
2021/12/14(火) 18:15:04.93ID:sz49PmUD POSIXとの互換性、仮にGNU bcでPOSIXのがそのまま動くとしても互換動作モードやドキュメントを書くのが面倒 とかかなと思ったら、
-w, --warn
POSIX bc に対する拡張機能が入力された場合は警告を出します。
-s, --standard
POSIX bc の言語仕様に厳密に従って処理します。
きっちりあるやん。なんでだろ。ナゾい
-w, --warn
POSIX bc に対する拡張機能が入力された場合は警告を出します。
-s, --standard
POSIX bc の言語仕様に厳密に従って処理します。
きっちりあるやん。なんでだろ。ナゾい
326デフォルトの名無しさん
2021/12/14(火) 19:12:11.27ID:/wewuKga >>328
書いてませんでした
書いてませんでした
327デフォルトの名無しさん
2021/12/14(火) 19:13:20.14ID:/wewuKga >>320
書いてませんでした。
なんですぐバレる嘘をつくんだろうかね
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_04
書いてませんでした。
なんですぐバレる嘘をつくんだろうかね
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_04
328デフォルトの名無しさん
2021/12/14(火) 19:15:41.20ID:sz49PmUD 書いてるだろwww
すげえなあ
すげえなあ
329デフォルトの名無しさん
2021/12/14(火) 19:18:10.50ID:sz49PmUD なんか、予告的なアンカーだなw
書いてませんでした と言えるのがイミフ。凄すぎてわからん
書いてませんでした と言えるのがイミフ。凄すぎてわからん
330デフォルトの名無しさん
2021/12/14(火) 19:18:12.33ID:/wewuKga なるほど、本当にここに書いてあるという主張してるのか
2.6.4 Arithmetic Expansion
Arithmetic expansion provides a mechanism for evaluating an arithmetic expression and substituting its value. The format for arithmetic expansion shall be as follows:
$((expression))
The expression shall be treated as if it were in double-quotes, except that a double-quote inside the expression is not treated specially. The shell shall expand all tokens in the expression for parameter expansion, command substitution, and quote removal.
Next, the shell shall treat this as an arithmetic expression and substitute the value of the expression. The arithmetic expression shall be processed according to the rules given in Arithmetic Precision and Operations, with the following exceptions:
Only signed long integer arithmetic is required.
Only the decimal-constant, octal-constant, and hexadecimal-constant constants specified in the ISO C standard, Section 6.4.4.1 are required to be recognized as constants.
The sizeof() operator and the prefix and postfix "++" and "--" operators are not required.
Selection, iteration, and jump statements are not supported.
2.6.4 Arithmetic Expansion
Arithmetic expansion provides a mechanism for evaluating an arithmetic expression and substituting its value. The format for arithmetic expansion shall be as follows:
$((expression))
The expression shall be treated as if it were in double-quotes, except that a double-quote inside the expression is not treated specially. The shell shall expand all tokens in the expression for parameter expansion, command substitution, and quote removal.
Next, the shell shall treat this as an arithmetic expression and substitute the value of the expression. The arithmetic expression shall be processed according to the rules given in Arithmetic Precision and Operations, with the following exceptions:
Only signed long integer arithmetic is required.
Only the decimal-constant, octal-constant, and hexadecimal-constant constants specified in the ISO C standard, Section 6.4.4.1 are required to be recognized as constants.
The sizeof() operator and the prefix and postfix "++" and "--" operators are not required.
Selection, iteration, and jump statements are not supported.
331デフォルトの名無しさん
2021/12/14(火) 19:18:27.78ID:/wewuKga All changes to variables in an arithmetic expression shall be in effect after the arithmetic expansion, as in the parameter expansion "${x=value}".
If the shell variable x contains a value that forms a valid integer constant, optionally including a leading <plus-sign> or <hyphen-minus>, then the arithmetic expansions "$((x))" and "$(($x))" shall return the same value.
As an extension, the shell may recognize arithmetic expressions beyond those listed. The shell may use a signed integer type with a rank larger than the rank of signed long. The shell may use a real-floating type instead of signed long as long as it does not affect the results in cases where there is no overflow. If the expression is invalid, or the contents of a shell variable used in the expression are not recognized by the shell, the expansion fails and the shell shall write a diagnostic message to standard error indicating the failure.
どこにあるのか、言ってみ
If the shell variable x contains a value that forms a valid integer constant, optionally including a leading <plus-sign> or <hyphen-minus>, then the arithmetic expansions "$((x))" and "$(($x))" shall return the same value.
As an extension, the shell may recognize arithmetic expressions beyond those listed. The shell may use a signed integer type with a rank larger than the rank of signed long. The shell may use a real-floating type instead of signed long as long as it does not affect the results in cases where there is no overflow. If the expression is invalid, or the contents of a shell variable used in the expression are not recognized by the shell, the expansion fails and the shell shall write a diagnostic message to standard error indicating the failure.
どこにあるのか、言ってみ
332デフォルトの名無しさん
2021/12/14(火) 19:19:31.70ID:0juEz1uN >>327
そうやって、わざわざ相手にしてちゃんと調べてやる人がおるからやろ。w
そうやって、わざわざ相手にしてちゃんと調べてやる人がおるからやろ。w
333デフォルトの名無しさん
2021/12/14(火) 19:20:48.60ID:0juEz1uN あ、違うんか。
またいちびっとるとは思わんかった。
またいちびっとるとは思わんかった。
334デフォルトの名無しさん
2021/12/14(火) 19:21:00.40ID:/wewuKga 英語めないんでしょ?
2.6.4 算術式の展開
算術展開は、算術式を評価してその値を代入するためのメカニズムである。算術展開のフォーマットは以下のとおりです。
$((式))
式は二重引用符で囲まれているかのように扱われますが、式の中の二重引用符は特別に扱われません。シェルは、パラメータの展開、コマンドの置換、
引用符の除去のために、式のすべてのトークンを展開する。
次に、シェルはこれを算術式として扱い、式の値を代入する。算術式は、以下の例外を除き、
「算術の精度と演算」で示された規則に従って処理されなければならない。
符号付き長整数の算術演算のみが必要である。
ISO C規格の6.4.4.1項で規定されている
10進数定数、8進数定数、16進数定数のみを定数として認識する必要があります。
sizeof()演算子、前置および後置の "++"および"--"演算子は必須ではありません。
選択、反復、およびジャンプ文はサポートされていません。
算術式の中の変数に対するすべての変更は、"${x=value}"というパラメータ展開のように、
算術式の展開の後に効力を持つものとします。
シェルの変数xが、有効な整数定数を構成する値を含み、オプションとして先頭に<プラス記号>または
<ハイフン-マイナス>を含む場合、算術展開の"$((x)) "と"$(($x)) "は同じ値を返すものとします。
拡張機能として、シェルはここに挙げた以外の算術式を
認識することができます。シェルは、signed long のランクよりも大きいランクの符号付き整数型を使用することができます。
シェルは、オーバーフローが発生しない場合の結果に影響しない限り、signed long の代わりに real-floating 型を使用してもよい。式が無効な場合、または
式で使用されているシェル変数の内容がシェルによって認識されない場合、展開は失敗し、シェルは失敗を示す診断メッセージを標準エラーに書き込まなければならない。
2.6.4 算術式の展開
算術展開は、算術式を評価してその値を代入するためのメカニズムである。算術展開のフォーマットは以下のとおりです。
$((式))
式は二重引用符で囲まれているかのように扱われますが、式の中の二重引用符は特別に扱われません。シェルは、パラメータの展開、コマンドの置換、
引用符の除去のために、式のすべてのトークンを展開する。
次に、シェルはこれを算術式として扱い、式の値を代入する。算術式は、以下の例外を除き、
「算術の精度と演算」で示された規則に従って処理されなければならない。
符号付き長整数の算術演算のみが必要である。
ISO C規格の6.4.4.1項で規定されている
10進数定数、8進数定数、16進数定数のみを定数として認識する必要があります。
sizeof()演算子、前置および後置の "++"および"--"演算子は必須ではありません。
選択、反復、およびジャンプ文はサポートされていません。
算術式の中の変数に対するすべての変更は、"${x=value}"というパラメータ展開のように、
算術式の展開の後に効力を持つものとします。
シェルの変数xが、有効な整数定数を構成する値を含み、オプションとして先頭に<プラス記号>または
<ハイフン-マイナス>を含む場合、算術展開の"$((x)) "と"$(($x)) "は同じ値を返すものとします。
拡張機能として、シェルはここに挙げた以外の算術式を
認識することができます。シェルは、signed long のランクよりも大きいランクの符号付き整数型を使用することができます。
シェルは、オーバーフローが発生しない場合の結果に影響しない限り、signed long の代わりに real-floating 型を使用してもよい。式が無効な場合、または
式で使用されているシェル変数の内容がシェルによって認識されない場合、展開は失敗し、シェルは失敗を示す診断メッセージを標準エラーに書き込まなければならない。
335デフォルトの名無しさん
2021/12/14(火) 19:21:38.22ID:/wewuKga いちいち嘘を付く理由がわからんね
336デフォルトの名無しさん
2021/12/14(火) 19:22:29.34ID:sz49PmUD337デフォルトの名無しさん
2021/12/14(火) 19:23:44.74ID:/wewuKga 書いてないものをよく読めっていってごまかしてるのは
自分の間違いを認められないからなのかな?
自分の間違いを認められないからなのかな?
338デフォルトの名無しさん
2021/12/14(火) 19:24:02.73ID:sz49PmUD339デフォルトの名無しさん
2021/12/14(火) 19:25:13.06ID:/wewuKga だからどこにも書いてないと言ってる
なんで反論してるの?
なんで反論してるの?
340デフォルトの名無しさん
2021/12/14(火) 19:26:13.37ID:/wewuKga > シェルの変数xが、有効な整数定数を構成する値を含み、オプションとして先頭に<プラス記号>または
> <ハイフン-マイナス>を含む場合、算術展開の"$((x)) "と"$(($x)) "は同じ値を返すものとします。
ここよく読めばわかるが、書いてないと言ってる。
他に言い返す言葉はある?
> <ハイフン-マイナス>を含む場合、算術展開の"$((x)) "と"$(($x)) "は同じ値を返すものとします。
ここよく読めばわかるが、書いてないと言ってる。
他に言い返す言葉はある?
341デフォルトの名無しさん
2021/12/14(火) 19:27:50.35ID:/wewuKga やっぱりだまっちゃったかw
342デフォルトの名無しさん
2021/12/14(火) 19:29:37.68ID:sz49PmUD343デフォルトの名無しさん
2021/12/14(火) 19:31:39.59ID:/wewuKga >>342
なんで内容を端折るんだ?
たった3行だろ
全部読めよ
理解してないまま回答してるんだから
そりゃ嘘つき呼ばわりされてもしょうがない
name=value
: $(($name = 123))
echo $value
これってPOSIX準拠?
なんで内容を端折るんだ?
たった3行だろ
全部読めよ
理解してないまま回答してるんだから
そりゃ嘘つき呼ばわりされてもしょうがない
name=value
: $(($name = 123))
echo $value
これってPOSIX準拠?
344デフォルトの名無しさん
2021/12/14(火) 19:32:41.80ID:/wewuKga 英語読めない。規格書を読めないって
バカにされていた○○主義者ってのがいたなぁ
バカにされていた○○主義者ってのがいたなぁ
345デフォルトの名無しさん
2021/12/14(火) 19:34:10.98ID:sz49PmUD346デフォルトの名無しさん
2021/12/14(火) 19:34:30.12ID:/wewuKga 書いてないことを自分の都合のいいように解釈して突っ走るところもそっくりだ
347デフォルトの名無しさん
2021/12/14(火) 19:34:50.92ID:sz49PmUD348デフォルトの名無しさん
2021/12/14(火) 19:34:51.68ID:/wewuKga349デフォルトの名無しさん
2021/12/14(火) 19:35:59.31ID:/wewuKga name=value
: $(($name = 123))
echo $value
これよんで、
> 問題にしてるのは
> $(($name = 123))
> これ
> name = 123
> これ
> =
> これ
> ってことでいいんだな?
なんて質問するのも頭が悪い
: $(($name = 123))
echo $value
これよんで、
> 問題にしてるのは
> $(($name = 123))
> これ
> name = 123
> これ
> =
> これ
> ってことでいいんだな?
なんて質問するのも頭が悪い
350デフォルトの名無しさん
2021/12/14(火) 19:36:18.40ID:sz49PmUD >>346,348
いつもの 誤魔化 しかよ
つくづくだな
お前はどこがPOSIX準拠じゃないと思ってるねん?
name=value
: $(($name = 123))
echo $value
全部か?w
いつもの 誤魔化 しかよ
つくづくだな
お前はどこがPOSIX準拠じゃないと思ってるねん?
name=value
: $(($name = 123))
echo $value
全部か?w
351デフォルトの名無しさん
2021/12/14(火) 19:37:27.42ID:/wewuKga352デフォルトの名無しさん
2021/12/14(火) 19:38:15.35ID:/wewuKga ホントなんでこんなバカなんだろうな
353デフォルトの名無しさん
2021/12/14(火) 19:38:33.15ID:/wewuKga 英語というか、規格書の読み方をっ勉強したほうがいいぞ
354デフォルトの名無しさん
2021/12/14(火) 19:42:47.04ID:sz49PmUD >>351,352,353
>POSIXにはname変数の中身が整数定数でないときに
>どうなるかの挙動が書いてない
なに言ってるの? name = 123 この部分だろ?
name変数の中身が整数定数 なんて関係ないぞ
コンピューターサイエンスw的に、型が無い言語なら当たり前的にもな
お前は仕様書、規格書読むのに必要な知識が足りなさすぎだがな、
よく言うよほんと自己紹介好きw
>POSIXにはname変数の中身が整数定数でないときに
>どうなるかの挙動が書いてない
なに言ってるの? name = 123 この部分だろ?
name変数の中身が整数定数 なんて関係ないぞ
コンピューターサイエンスw的に、型が無い言語なら当たり前的にもな
お前は仕様書、規格書読むのに必要な知識が足りなさすぎだがな、
よく言うよほんと自己紹介好きw
355デフォルトの名無しさん
2021/12/14(火) 19:44:03.99ID:/wewuKga > なに言ってるの? name = 123 この部分だろ?
name = 123 と書いたのはおまえ
↓どこにも書いてない。目が悪い?それとも頭?
name=value
: $(($name = 123))
echo $value
name = 123 と書いたのはおまえ
↓どこにも書いてない。目が悪い?それとも頭?
name=value
: $(($name = 123))
echo $value
356デフォルトの名無しさん
2021/12/14(火) 19:44:44.42ID:/wewuKga > If the shell variable x contains a value that forms a valid integer constant,
読めないんだろうなぁ
はい、翻訳
シェルの変数xが、有効な整数定数を構成する値を含み、
読めないんだろうなぁ
はい、翻訳
シェルの変数xが、有効な整数定数を構成する値を含み、
357デフォルトの名無しさん
2021/12/14(火) 19:45:07.43ID:6VIYonG0 $nameをvalueに変えるparameter expansionは最初に行われるでしょ
> The shell shall expand all tokens in the expression for parameter expansion, command substitution, and quote removal.
その後は普通にvalue = 123が実行されるだけ
> The shell shall expand all tokens in the expression for parameter expansion, command substitution, and quote removal.
その後は普通にvalue = 123が実行されるだけ
358デフォルトの名無しさん
2021/12/14(火) 19:45:36.95ID:/wewuKga 「その後は普通にvalue = 123が実行されるだけ」と書いていない
359デフォルトの名無しさん
2021/12/14(火) 19:45:41.12ID:sz49PmUD >>355
じゃあ、お前の言う
>POSIXにはname変数の中身が整数定数でないときに
>どうなるかの挙動が書いてない
ってどこの部分やねん
お前は他人の文の意味を読めなさすぎ、のくせによく言うよを繰り返しすぎだな
じゃあ、お前の言う
>POSIXにはname変数の中身が整数定数でないときに
>どうなるかの挙動が書いてない
ってどこの部分やねん
お前は他人の文の意味を読めなさすぎ、のくせによく言うよを繰り返しすぎだな
360デフォルトの名無しさん
2021/12/14(火) 19:51:21.66ID:sz49PmUD361デフォルトの名無しさん
2021/12/14(火) 19:57:45.01ID:/wewuKga362デフォルトの名無しさん
2021/12/14(火) 20:15:07.62ID:/wewuKga POSIX準拠じゃないのはこれか
name="1+2"
echo $(( name ))
name="1+2"
echo $(( name ))
363デフォルトの名無しさん
2021/12/14(火) 20:16:20.29ID:/wewuKga 今までの流れからすればこう書いたほうがいいね
name="var=1+2"
echo $(( name ))
name変数の中身が整数定数でないときに
どうなるかの挙動は書いてない
name="var=1+2"
echo $(( name ))
name変数の中身が整数定数でないときに
どうなるかの挙動は書いてない
364デフォルトの名無しさん
2021/12/14(火) 20:32:34.85ID:2RbqpbYV シェルスクリプトで小数演算
dc ではいけないのか?
dc ではいけないのか?
365デフォルトの名無しさん
2021/12/18(土) 21:47:26.51ID:ThKMmio5 文字の長さに応じていい感じにタブの個数調整してくれる素敵なワンライナーとかない?
366デフォルトの名無しさん
2021/12/19(日) 00:43:08.09ID:1P9anxgU ワンライナーじゃなくてコマンドだろ
だいたいタブ個数調整と言われて
仕様がわからないとなんとも言えん
だいたいタブ個数調整と言われて
仕様がわからないとなんとも言えん
367デフォルトの名無しさん
2021/12/19(日) 04:58:32.60ID:Q8lTA8Fy unexpand
368デフォルトの名無しさん
2021/12/25(土) 20:40:43.43ID:62MjaTIU369デフォルトの名無しさん
2021/12/25(土) 21:25:20.38ID:gsyC6xqY >>368
2バイト文字では試してないけど
タブは8の倍数で位置を揃えるために必要な数が切り替わるので文字列リストの中で最大文字数のものに付与するタブを1として文字数が少なくなるほどタブを増やして行けばいいと分かった
最大文字数が42の場合
0〜7 タブ6つ
8〜15 タブ5つ
16〜23 タブ4つ
24〜31 タブ3つ
32〜39 タブ2つ
40〜47 タブ1つ
……
BINDのzoneファイルにAレコード大量追加したかっただけだから
ifで分岐させてなんとかしたけどもっと上手いことできるなら頼む
2バイト文字では試してないけど
タブは8の倍数で位置を揃えるために必要な数が切り替わるので文字列リストの中で最大文字数のものに付与するタブを1として文字数が少なくなるほどタブを増やして行けばいいと分かった
最大文字数が42の場合
0〜7 タブ6つ
8〜15 タブ5つ
16〜23 タブ4つ
24〜31 タブ3つ
32〜39 タブ2つ
40〜47 タブ1つ
……
BINDのzoneファイルにAレコード大量追加したかっただけだから
ifで分岐させてなんとかしたけどもっと上手いことできるなら頼む
370デフォルトの名無しさん
2021/12/25(土) 21:48:29.81ID:sYCPCNUA >>369
これを渡したら
<test.lst>
abc.c0м
defghijk.c0.jρ
123456.nёt
zzz.i0
これを出力して欲しい
<test_.lst>
abc.c0м IN A localhostのIP
defghijk.c0.jρ IN A localhostのIP
123456.nёt IN A localhostのIP
zzz.i0 IN A localhostのIP
↑
スマホからだからあれだがIN A以降は揃ってるつもり
これを渡したら
<test.lst>
abc.c0м
defghijk.c0.jρ
123456.nёt
zzz.i0
これを出力して欲しい
<test_.lst>
abc.c0м IN A localhostのIP
defghijk.c0.jρ IN A localhostのIP
123456.nёt IN A localhostのIP
zzz.i0 IN A localhostのIP
↑
スマホからだからあれだがIN A以降は揃ってるつもり
371デフォルトの名無しさん
2021/12/25(土) 22:27:57.12ID:qPDC9gWr printfのが簡単なんじゃないの?
372デフォルトの名無しさん
2021/12/25(土) 22:32:53.73ID:o6Yb7nqK ifとprintfでやった
373デフォルトの名無しさん
2021/12/26(日) 01:41:37.96ID:7bx5KWMB >>370
スペース区切りの複数単語が1行に入っていて1番目と2番目の間の空白を調整して2番目が全行で同じ位置から始まるようにするってことね。
スペース区切りの複数単語が1行に入っていて1番目と2番目の間の空白を調整して2番目が全行で同じ位置から始まるようにするってことね。
374デフォルトの名無しさん
2021/12/26(日) 01:44:16.01ID:7bx5KWMB あ、ちょっと違うか。2番目以降は固定で決まっているから1番目の単語だけ読ませてその後ろのタブを何個付加するかの問題か。
375デフォルトの名無しさん
2021/12/26(日) 02:10:55.11ID:7bx5KWMB >>370
できた。perl だ。
$ perl -ne 'chomp;push(@s,$_);if($l<length){$l=length} END{$m=int($l/8)+1;for(@s){print$_.("\t" x ($m-int(length($_)/8)))."IN A localhostのIP\n"}}' test.lst
abc.c0м IN A localhostのIP
defghijk.c0.jρ IN A localhostのIP
123456.nёt IN A localhostのIP
zzz.i0 IN A localhostのIP
$
できた。perl だ。
$ perl -ne 'chomp;push(@s,$_);if($l<length){$l=length} END{$m=int($l/8)+1;for(@s){print$_.("\t" x ($m-int(length($_)/8)))."IN A localhostのIP\n"}}' test.lst
abc.c0м IN A localhostのIP
defghijk.c0.jρ IN A localhostのIP
123456.nёt IN A localhostのIP
zzz.i0 IN A localhostのIP
$
376デフォルトの名無しさん
2021/12/26(日) 02:14:02.08ID:7bx5KWMB ただし、UTF-8で複数バイト文字混ざりだと画面上の幅とバイト数が一致しなくて失敗する行が出てくるだろうな。
377デフォルトの名無しさん
2021/12/26(日) 02:30:31.24ID:Opbh/M6O スレタイ読めよ
378デフォルトの名無しさん
2021/12/26(日) 06:24:53.12ID:7bx5KWMB >>377
シェルだけでワンライナーにしろってか?可能な感じはするが、長くなりそうだな。ちょっと君試しに作ってみなよ。
シェルだけでワンライナーにしろってか?可能な感じはするが、長くなりそうだな。ちょっと君試しに作ってみなよ。
379デフォルトの名無しさん
2021/12/26(日) 06:55:50.56ID:Guj/6jti いいかげんワンライナーなんてものからは卒業すべき
あれは実用的ではない
あれは実用的ではない
380デフォルトの名無しさん
2021/12/26(日) 07:00:58.21ID:Guj/6jti だいたい位置揃えならcolumnコマンドを使えばすむ
cat /etc/hosts | column -t
cat /etc/hosts | column -t
381デフォルトの名無しさん
2021/12/26(日) 08:08:53.29ID:7ywlyW9o columnコマンドなんてあったのな
これしゅごい
これしゅごい
382デフォルトの名無しさん
2021/12/26(日) 09:30:37.45ID:JgxQVN1x >>378
スレタイ読めよ
スレタイ読めよ
383デフォルトの名無しさん
2021/12/26(日) 12:47:31.30ID:N3NYq5+A プログラム技術。
384デフォルトの名無しさん
2021/12/26(日) 12:59:08.59ID:VAEhq19p すれたい
385デフォルトの名無しさん
2021/12/26(日) 13:59:45.22ID:0AMzbiZh 第一フィールドは20文字の決め打ちで
awk '{printf "%-20s %s", $1, "IN A 127.0.0.1\n"}' test.lst
awk '{printf "%-20s %s", $1, "IN A 127.0.0.1\n"}' test.lst
386デフォルトの名無しさん
2021/12/26(日) 17:10:00.49ID:NwCcamJz シェルではないね
387デフォルトの名無しさん
2021/12/26(日) 17:57:01.68ID:FJp/KqIP388デフォルトの名無しさん
2021/12/26(日) 20:01:39.02ID:nf0VENp6 columnはPOSIXじゃない!
よってawkで実装しなければいけない!
よってawkで実装しなければいけない!
389デフォルトの名無しさん
2021/12/26(日) 20:07:09.32ID:stZFhmVl >>388
っスレタイ
っスレタイ
390デフォルトの名無しさん
2021/12/26(日) 21:01:43.80ID:NGc68XAG フィルタープログラムはシェルスクリプトには必須だよ
391デフォルトの名無しさん
2021/12/26(日) 23:55:43.97ID:7bx5KWMB >>380>>385
TABになってないじゃん。
TABになってないじゃん。
392デフォルトの名無しさん
2021/12/26(日) 23:56:34.73ID:7bx5KWMB >>387
既存のコマンドで丁度良くTAB入れるやつは何てコマンド?
既存のコマンドで丁度良くTAB入れるやつは何てコマンド?
393デフォルトの名無しさん
2021/12/27(月) 01:45:10.81ID:t9d2fK6k394デフォルトの名無しさん
2021/12/27(月) 01:51:55.20ID:4XXPAYbv395デフォルトの名無しさん
2021/12/27(月) 02:06:52.16ID:4gZrwhe1396デフォルトの名無しさん
2021/12/27(月) 02:53:50.89ID:t9d2fK6k397デフォルトの名無しさん
2021/12/27(月) 05:01:52.38ID:4XXPAYbv > column コマンドでは TAB は出力されないよね。
スペースをタブに変換すりゃいいだろ
スペースをタブに変換すりゃいいだろ
398デフォルトの名無しさん
2021/12/27(月) 05:02:55.30ID:4XXPAYbv シェルスクリプトというのは既存のコマンドを使って
いかに楽をするかっていうのが重要
POSIXにこだわるのはアホ
いかに楽をするかっていうのが重要
POSIXにこだわるのはアホ
400デフォルトの名無しさん
2021/12/27(月) 11:39:49.78ID:4gZrwhe1401デフォルトの名無しさん
2021/12/27(月) 12:51:40.94ID:t9d2fK6k ハイハイ、ご要望通りにいたしましたw
F="%-`wc -L test.lst|cut -f1 -d' '`s";awk '{printf"'$F'\t%s",$1,"IN A 127.0.0.1\n"}' test.lst|unexpand -a
F="%-`wc -L test.lst|cut -f1 -d' '`s";awk '{printf"'$F'\t%s",$1,"IN A 127.0.0.1\n"}' test.lst|unexpand -a
402デフォルトの名無しさん
2021/12/27(月) 22:40:58.39ID:6GChlJ/6 >>401
ありがとう
ありがとう
403デフォルトの名無しさん
2021/12/28(火) 01:16:53.28ID:JDHjDqJz 汚らしいパールのワンライナーに比べたら多少洗練されたようだな
404デフォルトの名無しさん
2021/12/28(火) 12:30:02.74ID:IE5w4ImF405デフォルトの名無しさん
2021/12/28(火) 14:14:41.00ID:l3lJRmOp columnは知ってたけど-Lオプションは知らなかった
406デフォルトの名無しさん
2021/12/28(火) 14:39:23.17ID:GaScW5/W columnに-Lオプションなんてあるの?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【卓球】早田ひな、「総額100万スられた」「ずっと憧れていたスペインとイタリア…」ヨーロッパ旅行で悲劇 スリ被害を告白 [muffin★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 産経新聞「高市早苗の答弁さぁ……思慮が足りてなくね?官僚と詰めずに思いつきで話しているでしょ」 [175344491]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【雑談】暇人集会所part18
- 高市早苗「支持者の理解を得られないので台湾発言を撤回できない」 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
