首页 > 解决方案 > 从文本文件中逐行读取并在 shell 脚本中打印我想要的方式

问题描述

我想从文本文件中逐行读取下面的文件并在 shell 脚本中打印我想要的方式

Text file content:   
zero#123456  
one#123  
two#12345678 

我想将其打印为:

zero@1-6  
one@1-3  
two@1-8  

我尝试了以下方法:

file="readFile.txt"     
while IFS= read -r line    
do echo  "$line"     
done  <printf '%s\n' "$file"    

标签: shell

解决方案


这不是 shell 脚本(首先错过了,抱歉),而是使用 perl 结合前瞻和后瞻来获取数字:

$ perl -pe 's/(?<=[0-9]).*(?=[0-9])/-/' file
Text file content:   
zero#1-6  
one#1-3  
two#1-8 

解释了一些:

  • s//-/替换为 -
  • (?<=[0-9])正面向后看,如果前面有数字
  • (?=[0-9])正向前瞻,如果后跟一个数字

推荐阅读