Unix Shell:搜索文件并附加其最后一次出现

时间:2013-10-28 12:24:42

标签: shell unix search awk append

我正在尝试搜索文件中的给定文本并查找其最后出现的索引。 任务是将搜索到的索引附加到同一文件中但在单独的列中。 我能够完成任务,但寻找更有效的解决方案。

以下是详细说明:

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

是否存在我们不需要创建暂存文件但仍能获得相同结果的工作?

1 个答案:

答案 0 :(得分: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