【问题标题】:Skip line in text file which starts with '#' via KornShell (ksh)通过 KornShell (ksh) 跳过以“#”开头的文本文件中的行
【发布时间】:2012-04-10 12:05:02
【问题描述】:

我正在尝试编写一个脚本来读取文本文件并将每一行保存到一个字符串中。我还希望脚本跳过任何以井号开头的行。有什么建议吗?

【问题讨论】:

  • 如果有一百万行怎么办..你会在一百万个字符串中寻找吗?
  • 不,我不会去寻找它们,因为不会有一百万行。我也说过,一个字符串,就像一个字符串。

标签: shell unix scripting ksh


【解决方案1】:

您不应将跳线留给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

【讨论】:

  • 感谢您的建议,我得到了“在标准输出上写入错误,管道正在关闭”有什么想法吗??
【解决方案2】:
while read -r line; do
    [[ "$line" = *( )#* ]] && continue
    # do something with "$line"
done < filename

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-28
    • 2011-07-16
    • 1970-01-01
    • 2018-09-10
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多