如何使用 shell 脚本从文件的每一行中删除前导和尾随 space?

How to remove the leading and trailing space from each line of a file using shell script?

我有一个包含前导和尾随 space 的文件。这是文件

val1=22 
 val2=23  
val4=34 

如何从中删除开头和结尾的白色 space?白色 space 也可能是 'tab'。有一个命令可以做到吗?

您有多种选择可以达到预期的效果。其中之一就是使用 Notepad++,这是最好的文本编辑器之一:

  • 在 Notepad++ 中打开文件,
  • Ctrl+H打开"Replace"对话框,
  • 在"Find what"文本框中插入(^[\s\t]+)|([\s\t]+$)
  • 将 "Replace with" 文本框留空,
  • Select 对话框底部 "Search Mode" 组中的 "Regular expression"。
  • 按 "Replace All" 按钮即可完成。


"Find what" 文本框中插入的代码是一个 regular expression,指示查找器查找前导 (^[\s\t]+) 或尾随 ([\s\t]+$) 空格或制表符。

这是我发现的用于从文件的每一行中删除前导和尾随空格和制表符的命令。它对我有用。

sed -i 's/^[ \t]*//;s/[ \t]*$//' "filename"

在哪里

  • s/ :替换命令 ~ 替换每个寻址行上的模式 (^[ \t]*)
  • ^[ \t]* :搜索模式( ^ - 行首;[ \t]* 匹配一个或多个空格,包括制表符)
  • // : 替换(删除)所有匹配的模式

归功于此 link