line cookbook

Cookbook Version (opens in a new tab) CI State (opens in a new tab) OpenCollective OpenCollective License (opens in a new tab)


This cookbook is maintained by the Sous Chefs. The Sous Chefs are a community of Chef cookbook maintainers working together to maintain important cookbooks. If you’d like to know more please visit (opens in a new tab) or come chat with us on the Chef Community Slack in #sous-chefs (opens in a new tab).


Quite often, the need arises to do line editing instead of managing an entire file with a template resource. This cookbook supplies various resources that will help you do this.


  • The line resources processes the entire target file in memory. Trying to edit large files may fail.

  • The end of line processing was only tested using \n and \r\n. Using other line endings very well may not work.

  • The end of line string used needs to match the actual end of line used in the file \n and \r\n are used as the defaults but if they don't match the actual end of line used in the file the results will be weird.

  • Adding a line implies there is a separator on the previous line. Adding a line differs from appending characters.

  • Lines to be added should not contain EOL characters. The providers do not do multiline regex checks.

  • Missing file processing is the way it is by intention

    • add_to_list do nothing, list not found so there is nothing to add to.
    • append_if_no_line create file, add the line.
    • delete_from_list do nothing, the list was not found which implies there is nothing to delete
    • delete_lines do nothing, the line isn't there which implies there is nothing to delete
    • replace_or_add create file, add the line
    • filter_lines create file if the file changes
  • Chef client version 13 or greater is expected.


For more detailed information see the matching resource documentation:

Sample filters

  • after: Insert lines after a matched line
  • before: Insert lines before a matched lined
  • between: Insert lines between matched lines
  • comment: Change lines to comments
  • delete_between: Delete the lines found between two patterns
  • missing: Add missing lines to a file
  • replace: Replace each instance of matched lines
  • replace_between: Replace lines between matched lines
  • stanza: Insert or change keys in files formatted in stanzas
  • substitute: Substitute text in lines matching a pattern


  • Contributor: Mark Gibbons
  • Contributor: Dan Webb
  • Contributor: Sean OMeara
  • Contributor: Antek S. Baranski


This project exists thanks to all the people who contribute. (opens in a new tab)


Thank you to all our backers!


Support this project by becoming a sponsor. Your logo will show up here with a link to your website.