shell過濾中文
Ⅰ 如何在Linux shell下做中文字元串的匹配
a=$( expr 'helloworld20140501.txt' : '.*\([0-9]\{8\}\).*' )
echo $a
linux shell 中可以將命令的結果賦值給變數,$(命令)這種格式將返回命令執行後的結果字元串
上面命令執行後,變數a的值是20140501
a=`echo 'helloworld20140501.txt'|sed 's/.*\([0-9]\{8\}\).*/\1/'`
這個命令作用也是一樣,變數a被賦值為20140501!
Ⅱ 如何用shell實現中文轉unicode
你自己去了解下iconv命令吧
Ⅲ bash shell終端中文顯示
首先糾正你的一個錯誤, bash shell並不是終端。
終端的概念是一個應用程序, 負責解釋對端傳來的數據顯示給用戶看,同時接受用戶的輸入傳輸給對端。
如果你用的是gnome, 這個終端一般就是gnome-terminal, 終端有很多, 比如xterm, cxterm, 等等, 還有在windows下的netterm teraterm , securetty, putty等,都是終端。甚至windows的dos窗口也是終端的一種。更廣義的, windows的遠程桌面,也是終端,「圖形終端」
ok,接下去解釋你的問題, 終端最重要功能之一是顯示對端傳輸過來的內容給用戶。 對於字元終端,那麼就是把字元內碼變成具體字體文件中的某一個字體顯示給用戶看。 你執行了 LANG=UTF-8,那麼大部分linux軟體輸出的信息就是用UTF-8編碼的文字, 如果你的終端可以正確顯示這些文字,說明你的終端中默認編碼為UTF-8.
然後你掛載了windows分區, 比如用ls命令列目錄, 剛才說到LANG=UTF-8會影響linux命令的輸出信息為UTF
-8編碼,但是大部分命令來說,僅僅影響該命令自身輸出的信息,比如 問一個一個問題,告訴你一個信息。 而對於ls來說,它的作用是把實際存在的文件名字告訴你, 這個文件名字的編碼是什麼,ls不關心,所以 你的mount命令,對於linux的文件系統來說, 是把儲存在vfat文件系統上的文件名用 cp936的代碼頁編碼提供給linux, 所以ls命令讀到的也是cp936代碼頁的編碼,實際上也就是我們平時說的GB編碼, ls命令就把這些文件名輸出給終端, 終端只認識utf-8編碼, gb編碼的不認識,就變成了"?"。
試試 iocharset=utf-8看看有沒有用。 手上沒有測試環境,不過最重要的是你要理解這種情況發生的原因。
Ⅳ shell 字元串過濾問題
read-p"pleaseinput:"str
echo$theFile|sed-r's/(.*_)[^_]+$/1'$str'/g'
Ⅳ shell 判斷是否為中文
echo 'zhangsan張三' |awk '{print gensub(/[!-~]/,"","g",$0)}'
張三
echo 'zhangsan張三' |awk '{print gensub(/[^!-~]/,"","g",$0)}'
zhangsan
ascii 碼表順序上, ! - ~ 基本就涵蓋了全部可見字元了,這個編碼之外的就是中文了(對這個例子而言)
Ⅵ 如何讓shell腳本支持中文
shell腳本支不支持中文是 看你的系統的,如果你裝linux的時候裝了中文包 ,那他就支持。
Ⅶ 請教一個Shell腳本能將其它文件中的中文的「替換為英文的"
查看文件cat命令
[service@gan .ssh]$ cat file.txt
1A1A
2B2B
3C3C
gan.cublog.cn
默認就替換第一個字元
指定只替換第2個字元
[service@gan .ssh]$ sed 's/1/X/2' file.txt
1AXA
2B2B
3C3C
替換所有字元
[service@gan .ssh]$ sed 's/1/X/g' file.txt
XAXA
2B2B
3C3C
Ⅷ shell腳本中ls過濾顯示問題
#應該是用下面:
ls-l/tmp/*.xml
#當然,還有其他辦法,如:
find/tmp-name*.xml|xargsls-l
希望能夠幫助到你,你的好評是我前進的動力,謝謝!
Ⅸ linux 操作系統中shell過濾
這不簡單,for循環嵌套case多分枝選擇結構,一樓的回答我就不說什麼了,根本就沒有/bash/這個路徑,sh自然也不會存在在這個路徑上。這個腳本就是可能的數值太多,case分支寫得累……。算了,我給你寫個吧。
說明:此腳本接收腳本後跟的第一個參數為讀取定義數值的文本,比如說你在工作路徑上有個叫test的文件,該文件定義了需要包含的數字,腳本本身的文件名是num那麼執行該腳本的命令是./num ./test
每個數字對應的命令自己改吧,我這里全是列印文件里包含了對應的數值到標准輸出上。以下腳本在ubuntu server 8.04測試通過。
#! /bin/bash
for var in `sed 's/,/ /g' $1` #注意,包圍sed語句的是反引號,即字母鍵盤上方數字1左邊的那個鍵
do
case $var in
0)
echo "0 is in the string\.";;
1)
echo "1 is in the string\.";;
2)
echo "2 is in the string\.";;
3)
echo "3 is in the string\.";;
4)
echo "4 is in the string\.";;
5)
echo "5 is in the string\.";;
6)
echo "6 is in the string\.";;
7)
echo "7 is in the string\.";;
8)
echo "8 is in the string\.";;
9)
echo "9 is in the string\.";;
10)
echo "10 is in the string\.";;
11)
echo "11 is in the string\.";;
12)
echo "12 is in the string\.";;
13)
echo "13 is in the string\.";;
14)
echo "14 is in the string\.";;
15)
echo "15 is in the string\.";;
16)
echo "16 is in the string\.";;
17)
echo "17 is in the string\.";;
18)
echo "18 is in the string\.";;
19)
echo "19 is in the string\.";;
20)
echo "20 is in the string\.";;
21)
echo "21 is in the string\.";;
22)
echo "22 is in the string\.";;
23)
echo "23 is in the string\.";;
24)
echo "24 is in the string\.";;
25)
echo "25 is in the string\.";;
26)
echo "26 is in the string\.";;
27)
echo "27 is in the string\.";;
28)
echo "28 is in the string\.";;
*)
echo "One or more variable\(s\) in $1 is out of range!";;
esac
done
Ⅹ shell根據條件進行數據過濾
用awk,NA數量大於六,丟棄,met列各欄位值求平均,不符合,丟棄,否則列印寫入另一個文件,文件如果是csv,分分隔符設置成逗號,