How do I delete the newline from a process output?

前端 未结 4 1278
傲寒
傲寒 2021-01-11 09:39

I call git get the toplevel dir (according to Is there a way to get the git root directory in one command? ).

(let ((tmpbuffer (get-buffer-create (make-temp-         


        
相关标签:
4条回答
  • 2021-01-11 09:58

    I think you can do

    (replace-regexp-in-string "\n$" "" 
                  (shell-command-to-string "git rev-parse --show-toplevel"))
    
    0 讨论(0)
  • 2021-01-11 09:59

    Assuming it is stored in a variable output-string, the final newline at the end can be removed this way:

    (substring output-string 0 -1)
    

    With the shell-command way, it would look like this:

    (substring
      (shell-command-to-string "git rev-parse --show-toplevel")
      0 -1)
    
    0 讨论(0)
  • 2021-01-11 10:00

    If You are OK with awesome external package.

    use s-trim

    ELISP> (shell-command-to-string "light -G")
    "60.00\n"
    
    ELISP> (s-trim (shell-command-to-string "light -G"))
    "60.00"
    
    0 讨论(0)
  • 2021-01-11 10:01

    If you only want to remove a newline at the very end of the output, use

    (replace-regexp-in-string "\n\\'" "" 
      (shell-command-to-string "git rev-parse --show-toplevel"))
    

    The accepted answer also replaces pairs of newlines ("\n\n") in the output by single newlines ("\n"), because $ matches at the end of the string or after a newline, while \\' only matches at the end of the string.

    0 讨论(0)
提交回复
热议问题