2012-04-10 50 views
1

我正在尝试编写一个读取文本文件并将每行保存为字符串的脚本。我还希望脚本跳过任何以散列符号开头的行。有什么建议么?通过KornShell(ksh)跳过以'#'开头的文本文件中的行

+0

如果有一百万条线......万字符串将会如何? – Vijay 2012-04-10 12:10:09

+1

不,我不会追逐他们,因为不会有一百万行。我也说过,一个字符串,就像一个字符串。 – TomSelleck 2012-04-10 12:12:09

回答

3

您不应该忽略跳至ksh的行。例如。做到这一点:

grep -v '^#' INPUTFILE | while IFS="" read line ; do echo $line ; done 

代替作为echo部分做任何你想要的。

或者,如果ksh不支持此语法:

grep -v '^#' INPUTFILE > tmpfile 
while IFS="" read line ; do echo $line ; done < tmpfile 
rm tmpfile 
+0

感谢您的建议,我越来越'标准输出管道正在关闭写错误'任何想法?? – TomSelleck 2012-04-10 12:16:48

+0

试过后一种解决方案,一切正常。 – TomSelleck 2012-04-10 13:19:42

2
while read -r line; do 
    [[ "$line" = *()#* ]] && continue 
    # do something with "$line" 
done < filename 

中寻找“文件名模式”或“文件名生成”在KSH手册页。