cshシェルで文字Aから文字Zまで反復したいとします。どうすれば簡潔にそれを行うことができますか?
bashで私は次のようなことをします
for i in 'A B C ...Z'; do echo $i; done
ポイントは、AからZまでは書きたくないということです。
[A-Z]
AWKまたはPerlで1行の提案を提案できますか?
perl -e 'print for "a" .. "z", "A" .. "Z", 0 .. 9'
Perl
$,=" ";print +(A..Z)
またはシェル内で使用するには:
for i in `perl -e '$,=" ";print +(A..Z)'` ; do echo $i ; done
Rubyがインストールされていることを願っています。;)シェルからのこのプレーンなコマンドラインを参照してください。
Rubyを使用してAからZまで反復し、文字を印刷するように依頼します。
$ ruby -e ' "a".upto("z") {|letter| print letter}; print "\n"'
AからZまで反復し、現在の反復中に取得した値を文字列に置き換えてから、文字列を出力します。
$ ruby -e ' "a".upto("z") {|letter| puts "mkdir #{letter}"}'
mkdir a mkdir b mkdir c mkdir d ..。 mkdir z
mkdir
3つのディレクトリを作成するために、AからCへの反復の出力をへの引数として使用します。
$ mkdir $(ruby -e ' "a".upto("c") {|letter| puts "#{letter}"}')
結果を確認するためにリストを作成します。
$ ls -al drwxr-xr-x2iuliuユーザー40962009-10-0700:09 a drwxr-xr-x2iuliuユーザー40962009-10-0700:09 b drwxr-xr-x2iuliuユーザー40962009-10-0700:09 c
これが少し役立つことを願っています!;)
よろしく、Iuliu
どうですか:
for i in $(perl -e 'for my $i ("a".."z") { print "$i "; }'); do ...; done
...または私はあなたが達成しようとしていることを誤解していますか?
(確かに、使用する提案は明示的なPerlループ$,=" "
よりも優れています)。ただし、範囲を句読点で囲むfor
ことの価値はわかりません。+()
私が使用するだけでうまくいきます:print A..Z;
...perl -we 'print a..z;' gives me a warning about unquoted strings, but the uppercase version doesn't. The statement
印刷+(a..z)gives exactly the same warning ... and quoting any of these eliminates the warning. So what's the intent of the
+(...) `?これをリストコンテキストに強制しようとしているだけですか?)
誰もgawkソリューションを持っていないので、ここに1つあります
awk 'BEGIN{for(i=65;i<=90;i++) printf "%c", i}'
foreach i (`jot -c 26 65`)
echo $i
end
AWKの使用:
次のリンクを使用してASCII文字セットを参照できます。
http://ee.hawaii.edu/~tep/EE160/Book/chap4/subsection2.1.1.1.html
ここで、任意の値のセットを反復処理するために、次のようにAWKコマンドを使用できます。
awk'BEGIN {for(i = 97; i <123; i ++){printf "%c"、i}; printf "\ n";} '
結果:abcdefghijklmnopqrstu vwxyz
ここで、97は文字「a」に対応し、122は「z」に対応します。上記のリストの値を使用して、結果を変えることができます。
等々。
まったく同じ質問がありました。明らかなWindowsの使用例は、ドライブ文字のリストを反復処理することです。これはCygwinで機能します:
for i in a b {d..z}; do (du -s "/cygdrive/$i;"); done
または別の例:
for i in a b {d..h} {r..u}; do df /cygdrive/$i | grep -v Filesystem; done
または、Perlを使用したさらに別の例-インスピレーションを与えてくれたJim Dennisに感謝します:
perl -e 'for my $i ("a","b","d".."i","r".."v") { print "$i\n"; }' | sed -e 's/^/\/cygdrive\//'