我正在尝试搜索文件中的给定文本并查找其最后出现的索引。 任务是将搜索到的索引附加到同一文件中但在单独的列中。 我能够完成任务,但寻找更有效的解决方案。
以下是详细说明:
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
是否存在我们不需要创建暂存文件但仍能获得相同结果的工作?
答案 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