2013-10-28 98 views
0

我試圖搜索文件中給定的文本並查找其最後出現索引。 該任務是將搜索到的索引追加到同一個文件中,但放在單獨的列中。 我能夠完成任務,但尋找更有效的解決方案。Unix Shell:搜索文件並追加最後一次出現

以下是詳細說明:

names_file.txt

tarun trehan 
vikram batra 
allzhere blog 
allzhere android apps 
allzhere on facebook 
contact updater utility 
help me 

我運行下面的命令在臨時文件即names_searched.txt

grep "n" names_file.txt > names_searched.txt

以獲取結果以下是結果:

 
tarun trehan 
allzhere android apps 
allzhere on facebook 
contact updater utility

現在,我運行以下awk命令來提取「n」的最後一個索引。

cat names_searched.txt | awk -F"n" '{print length($0) - length($NF)}' > namex_srch_idx.txt

以下是結果:

12 
11 
11 
3

現在我粘貼文件準備一個結果文件,即

paste names_searched.txt namex_srch_idx.txt > names_result.txt

以下是理想的結果:

tarun trehan 12 
allzhere android apps 11 
allzhere on facebook 11 
contact updater utility 3

是有一個工作我們不需要創建登臺文件,仍然可以獲得相同的結果?

回答

3

您可以使用此awk一個班輪:

awk -F"n" '{ len=length($0) - length($NF); if(len > 0) print $0,len }' names_file.txt > names_result.txt 

通過fedorqui提到另外一個awk一個襯墊,

awk -F"n" 'NF>1{print $0, length($0) - length($NF)}' names_file.txt > names_result.txt 
+2

甚至'awk的-F 「N」「NF> 1 {打印$ 0,長度($ 0) - 長度($ NF)}'文件'。因此,沒有「n」的行將有NF == 1,因此不會打印。 – fedorqui

+0

謝謝......已更新。 – sat

+0

+1不錯的解決方案! –

相關問題