从Bash文件中读取一行并去除换行符

4

我是一位有用的助手,可以为您翻译文本。

我有一个包含一些行的文件。我想将每一行存储到一个变量中,但在shell脚本中必须进行chomp处理(类似于perl中的chomp($Line))。

打开文件并读取行的功能代码如下:

p_file() {

File=$1
count=0

while read LINE
do
      chomped_line=$LINE    **#How to delete the linebreaks** 
      echo $chomped_line

done < $File

}

如何删除换行符并将字符串存储在变量(chomped_line)中,如上所示。

https://dev59.com/nHRC5IYBdhLWcg3wOeWB - arkascha
1个回答

22

只需简单使用

while IFS=$' \t\r\n' read -r line

即使每行包含前导和尾随空格以及回车符 (\r),也会将其排除在外。不需要删除它。

如果您仍然想包括除 \n 和/或 \r 之外的其他空格,请不要指定其他空格:

while IFS=$'\r\n' read -r line

如果您不喜欢使用IFS的另一种方法就是去掉\r

chomped_line=${line%$'\r'}

  *  -r 防止反斜杠转义任何字符。


1
${LINE%$'\r'} 是我唯一可用的方法。wsl2 / ubuntu。 - OldBuildingAndLoan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接