2013-10-28 141 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不错的解决方案! –

相关问题