亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 3472 | 回復(fù): 11
打印 上一主題 下一主題

【請教】如何在Bourne Shell中進(jìn)行字符變換,把a(bǔ)變成n這樣的 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2003-02-18 09:06 |只看該作者 |倒序瀏覽
我在寫一個shell程序,要求進(jìn)行一個簡單的字符串變換功能,就是把一個字母變成字母表中它后面的第十三個字母,如果碰到末尾就折到頭開始。就是a->n, b->o, A->N, n->a, o->b這樣的。我已經(jīng)琢磨了很久了,仍然不得要領(lǐng)。

首先,我想應(yīng)該把一個字符串拆成單個的字符,然后才好做字符的轉(zhuǎn)換?墒俏也恢烙檬裁捶椒ǹ梢宰龅竭@一點,用C什么的當(dāng)然很好做,但是現(xiàn)在是shell,就有些不知所措了。

然后,要根據(jù)每個字符的ASCII碼進(jìn)行運算,加13再取模之類的,這個運算很簡單,但是問題是我怎么才能在shell里得到一個字符的ASCII碼呢?

再者,轉(zhuǎn)換得到的ASCII碼需要顯示成對應(yīng)的字符,我知道可以用echo "\0xx"這樣的形式輸出字符,但是這個數(shù)字是八進(jìn)制的,而上一步運算應(yīng)該是十進(jìn)制的,怎么在shell中做進(jìn)制轉(zhuǎn)換呢?

我研究了grep, awk, sed等,好像都不是很靈光。是不是有什么其他的Unix命令可以用呢?不過不可以自己寫個C程序什么之類的,要用基本的unix命令寫的shell完成這個工作。

請各位多多幫助,在線等待中..........

論壇徽章:
0
2 [報告]
發(fā)表于 2003-02-18 09:14 |只看該作者

【請教】如何在Bourne Shell中進(jìn)行字符變換,把a(bǔ)變成n這樣的

一個苯方法
tr "a" "n" inputfile
....................

論壇徽章:
0
3 [報告]
發(fā)表于 2003-02-18 09:27 |只看該作者

【請教】如何在Bourne Shell中進(jìn)行字符變換,把a(bǔ)變成n這樣的

要分幾步,咱們試試一個一個解決.
轉(zhuǎn)換得到的ASCII碼需要顯示成對應(yīng)的字符,我知道可以用echo "\0xx"這樣的形式輸出字符,但是這個數(shù)字是八進(jìn)制的,而上一步運算應(yīng)該是十進(jìn)制的,怎么在shell中做進(jìn)制轉(zhuǎn)換呢?
aa=`printf "%o" 61`
echo "\0$aa"

論壇徽章:
1
榮譽(yù)版主
日期:2011-11-23 16:44:17
4 [報告]
發(fā)表于 2003-02-18 10:33 |只看該作者

【請教】如何在Bourne Shell中進(jìn)行字符變換,把a(bǔ)變成n這樣的

這個行不啊,KSH 的,給個思路,還沒細(xì)想

  1. set  -A    lower_letter  a b c d e f g h i j k l m n o p q r s t u v w x
  2. y z
  3. set  -A    upper_letter  A B C D E F G H I J K L M N O P Q R S T U V W X
  4. Y Z
復(fù)制代碼


比如這時${lower_letter[0]} 等于a........${lower_letter[25]}=z,就把字母以數(shù)量連系起來
估計行得通,列為大蝦意下如何

論壇徽章:
0
5 [報告]
發(fā)表于 2003-02-18 11:13 |只看該作者

【請教】如何在Bourne Shell中進(jìn)行字符變換,把a(bǔ)變成n這樣的

laoxia 即使你這種方法
反過來通過字符查數(shù)字也不方便,比如a對應(yīng)為0
也需要遍歷一次整個數(shù)組.

論壇徽章:
0
6 [報告]
發(fā)表于 2003-02-18 11:44 |只看該作者

【請教】如何在Bourne Shell中進(jìn)行字符變換,把a(bǔ)變成n這樣的

多謝各位.
用tr好像不太可以,因為你第一次把a(bǔ)替換成了n,如此循環(huán),等到要替換n的時候,我怎么區(qū)分這個n是由a變過來的,還是原來就是呢?

laoxia的思路有啟發(fā),不過在標(biāo)準(zhǔn)的bsh里面有對應(yīng)的set -A嗎?我看了很多資料,都沒有提到能夠創(chuàng)建數(shù)組的。

大家繼續(xù)努力,熱切期盼中。

論壇徽章:
0
7 [報告]
發(fā)表于 2003-02-18 11:56 |只看該作者

【請教】如何在Bourne Shell中進(jìn)行字符變換,把a(bǔ)變成n這樣的

多謝各位.
用tr好像不太可以,因為你第一次把a(bǔ)替換成了n,如此循環(huán),等到要替換n的時候,我怎么區(qū)分這個n是由a變過來的,還是原來就是呢?

laoxia的思路有啟發(fā),不過在標(biāo)準(zhǔn)的bsh里面有對應(yīng)的set -A嗎?我看了很多資料,都沒有提到能夠創(chuàng)建數(shù)組的。

大家繼續(xù)努力,熱切期盼中。

論壇徽章:
0
8 [報告]
發(fā)表于 2003-02-18 12:20 |只看該作者

【請教】如何在Bourne Shell中進(jìn)行字符變換,把a(bǔ)變成n這樣的

AIX下:
tr  '[a-m,n-z]'  '[n-z,a-m]'  < file1  >file2
tr  '[a-m,n-z]'  '[n-z,a-m]'  < file2  >file3

論壇徽章:
1
榮譽(yù)版主
日期:2011-11-23 16:44:17
9 [報告]
發(fā)表于 2003-02-18 12:35 |只看該作者

【請教】如何在Bourne Shell中進(jìn)行字符變換,把a(bǔ)變成n這樣的

高,SOLARIS  7 sh 測試通過

論壇徽章:
0
10 [報告]
發(fā)表于 2003-02-18 13:02 |只看該作者

【請教】如何在Bourne Shell中進(jìn)行字符變換,把a(bǔ)變成n這樣的

小弟對didikei大俠的敬仰之情猶如滔滔江水...........

原本對tr已經(jīng)死心了,沒想到竟然tr還有如此妙用。

小弟的script是這樣的:
tr '[a-m,n-z,A-M,N-Z]' '[n-z,a-m,N-Z,A-M]'

所有問題都解決了,根本就不用我先前想的那么復(fù)雜。按照我以前的思路,還真有點兒不好折騰。

長見識,長見識!
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP