歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> Unix基礎知識

對文件中的行,單詞和字符進行迭代

編寫不同的文本處理和文件操作腳本時,通常需要對文件中的行,單詞和字符進行迭代,盡管這個問題看 起來很簡單,但是實現起來卻常常出現問題,下面,就讓我們來看看怎樣實現上述功能。

為了實現上 述的功能,我們需要分三個步驟敘述

一.迭代文件中的每一行

我們可以通過用一個 while 循環 從標准輸入中讀取,因此,它在每一次迭代中都會讀取一行。

下面的方法可以將stdin 重定向到文件 :

首先我們看下文件中的內容是怎樣的:

NO  Hello   Mark    Percent  
1   Sarath  45  90
2   Alex    49  98
3   Anu 45  90

下面給出實現的腳本:

#!/bin/bash  
while read line  
do   
echo $line  
done < data.txt

運行下我們的腳本,結果如圖所示:

二.迭代一行中的每一個單詞

我們同樣可以用while循環得到每一行,之後利用 IFS 獲取一行的各個字段

下面給出實現的腳 本:

#!/bin/bash  
while read line  
do   
for word in $line  
do   
echo $word;  
done  
done < data.txt

運行下我們的腳本,結果如圖所示:

三.迭代一個單詞中的每一個字 符

我們利用一個 for 循環對變量 i 進行迭代,迭代范圍從0到字符串的長度。在每次迭代中,我們可 以用一個特殊的記法:

${string:start:position:No_of_characters}

意思是:從字符串中提 取一個字符

這被稱為是子串提取技術,${word:start:position:No_of_characters} 返回變量word所 包含的字符串中的一個子串

${#word} 返回變量的長度

下面給出實現的腳本:

#!/bin/bash  
while read line  
do   
for word in $line  
do   
for(( i=0;i<${#word};i++ ))  
do  
echo ${word:i:1};  
done  
done  
done < data.txt

運行下我們的腳本,結果如圖所示:

說明:由於顯示的內容太長, 這裡的截圖顯示的只是輸出的一部分字符

Copyright © Linux教程網 All Rights Reserved