使用法

使用法

単語リストがありますが、1文字は小文字で、1文字は大文字に設定したいと思います。たとえば、「情報」という単語を「情報」と「情報」にしたいと思います。

答え1

牛に似た一種の栄養sed方法:

- 小文字で始まる:

s="information"
sed 's/\(.\)\(.\)/\L\1\U\2/g' <<< $s
iNfOrMaTiOn

- 大文字で始まる:

s="information"
sed -E 's/(.)(.){,1}/\U\1\L\2/g' <<< $s
InFoRmAtIoN

  • \L- 代替項目をまたはいずれかになるまで小文字に変換します\U\E

  • \U\L- or が見つかるまで代替文字を大文字に変換します。\E


愚かな(GNU awk)方法:

awk -v FPAT="[a-z]" '{ s=""; for(i=1;i<=NF;i++) { s=s""((i%2)? toupper($i) : $i)} print s }' <<< $s
InFoRmAtIoN
  • FPAT="[a-z]"- フィールド値を表すパターン

その他アッ関数のバリアントを使用してくださいsplit()

awk  '{ n=split($0,a,""); s=""; 
      for(i=1;i<=n;i++) { s=s""((i%2)? toupper(a[i]): tolower(a[i])) } print s }' <<< $s
InFoRmAtIoN
  • split()生成された要素の数を返します。

答え2

POSIXとして

awk '
  {
    for(i = 1; i <= length; i++) {
      c = substr($0, i, 1)
      printf "%s", (i%2 ? toupper(c) : tolower(c))
    }
    print ""
  }' < words.txt

答え3

perl -pe '
   ($_ = lc) =~ s/([a-z])([^a-z]*)(.)/\L$1$2\U$3/g;
   $_ .= y/a-zA-Z/A-Za-z/r;
'
  1. 入力行をすべて小文字に変換します。
  2. 大文字と小文字を交互に使用して、アルファベット以外の文字を下に移動してから上に移動します。また何もないかもしれません。これはアルファが連続していることを意味します。
  3. 最後に、yakatrコマンドを使用して大文字と小文字を置き換えて両方のバージョンを取得します。

使用法

s = "メッセージ"; echo "$s" | Perl-pe '....'

結果:

iNfOrMaTiOn
InFoRmAtIoN

関連情報