❶ 如果一個文件有1000個字元如何在linux 中用shell實現從第20個字元讀取10個字元。
文件看文件是什麼格式,共幾行,如果返回第一行中的20個字元開始往後10個字元的內容:
head -1 filename |awk '{print substr($0,20,10)}'
❷ 每天三分鍾搞定linux shell腳本10 字元串相關的if判斷
字元串比較包括
注意 :這里的符號要 轉義 ,否則變成了重定向了。
運行結果:
注意 :上面的 等號左右兩側 , 中括弧內側 一定要有空格
運行結果:
以上的例子,說明 小寫字母排在字典的後面 (類似於ascii的大小)。
sort 可以對字元串排序,sort 命令會把小寫字母放在前面 。
運行結果:
注意上面的 中括弧內側 一定要有空格。
注意做慶 :有時候想在字元串比較的時候使用 正則表達式 ,可以使用 雙方括弧 ,如:
運行如下:
注意:上面的 雙櫻早等號左右兩側,中括弧內側 一定要有脊胡雀空格
❸ 如何用shell提取文件中指定的字元串
cut命令
用法: cut 參數 文件名
說明:cut 命令從文件的每一行剪切位元組、字元和欄位並將這些位元組、字元和欄位寫至標准輸出。
參數:
-b :以位元組為單位進行分割。這些位元組位置將忽略多位元組字元邊界,除非也指定了 -n 標志。
-c :以字元為單位進行分割。
-d :自定義分隔符,默認為製表符。
-f :與-d一起使用,指定顯示哪個區域。
-n :取消分割多位元組字元。僅和 -b 標志一起使用。如果字元的最後一個位元組落在由 -b 標志的 List 參數指示的
更多參數請參考:cut - -help
-b用法:
以位元組為單位,指定相應的位元組輸出,由於一個英文字元只佔用一個位元組,所以對英文字元可以與-c等價,但是佔用多個節編碼的字元不適用,比如中文;
文件內容:
$ cat test.txt
1234567890
ABCDEFGHIJ
abcdefghij
hello wrold!
指定文件中每行的第1,3到7個字元輸出:
cut -b 1,3-7 test.txt
134567
ACDEFG
acdefg
hllo w
-n表示1到前n個字元,n-表示從n開始的所有字元
列印前兩個字元和從第8個開始的字元
$ cut -b -2,8- test.txt
12890
ABHIJ
abhij
herold!
中文:
文件內容:
$ cat test1.txt
我們好像在哪見過
你記得嗎?
好像那是一個春天!
❹ Linux:用shell如何實現讀取一個字元串的第n個字元呢
代碼如下:
str="/home/gateman"
if [ ${str:0:1} = "核租/" ]; then
echo "yes'
fi
${str:0:1} 中0表示從第幾個字元開始,1表示截取多長。
Shell是一種腳本語言,那麼,就必須有解釋器來執行這些腳本,常見的腳本解釋器有:
bash:是Linux標准默認的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的縮寫,內部命令一共有40個。
sh:由Steve Bourne開發,是Bourne Shell的縮寫,sh 是Unix 標准默認的shell。
另外還有:ash、 csh、 ksh等。
(4)shell讀文件取字元比較擴展閱讀
Linux shell 截取字元銷頃變數的前8位:
實現方法有如下幾種:
expr substr 「$a」 1 8
echo $a|awk 『{print substr(,1,8)}』
echo $a|cut -c1-8
echo $
expr $a : 『(.\).*』
echo $a|dd bs=1 count=8 2>/dev/null
按照指定要求分割:
比如獲取後綴名
ls -al | cut -d 「.」 -f2
小結:shell對應字元串的處理方法很多,根據需求靈活選擇。
在做shell批處理程序時候,經常會涉及到字元串相關操作。有很多命令語句,如:awk,sed都可以做字元串各種操作。 其實shell內置一系列操作符號,可以達到類似效果,大家知虧氏陸道,使用內部操作符會省略啟動外部程序等時間,因此速度會非常的快。
❺ 如何用shell提取文件中指定的字元串
shell讀取文件的指定行字元串
在得到數行輸出時,需要得到指定行的欄位,可以使用該指令。
sed -n Np 文件名
如sed -n 2p xxx 輸出結果即為第二行的內容
在shell腳本中有時需要按行讀出文件的內容,比如文件中每一行的命令等。
假設存在文件filename,需要從中按行讀取內容,並在每行的開頭增加字元串command,命令如下
cat filename | while read line; do echo "command $line"; done!