Unix 使用awk将反斜杠后跟换行符替换为空格

Unix 使用awk将反斜杠后跟换行符替换为空格,unix,awk,newline,Unix,Awk,Newline,我有一个文件,其内容如下: string1 = string2.a \ string3.a \ string4.a string5 = random 需要的输出文件是: string1 = string2.a string3.a string4.a string5 = random 我尝试了以下几点: gawk '{ gsub(/\\n/," ");print }' inputfile > outputfile 但它没有起作用。有什么建议吗?

我有一个文件,其内容如下:

string1 = string2.a \
          string3.a \
          string4.a
string5 = random
需要的输出文件是:

string1 =  string2.a string3.a string4.a
string5 = random
我尝试了以下几点:

gawk '{ gsub(/\\n/," ");print }' inputfile > outputfile

但它没有起作用。有什么建议吗?

如果您不局限于awk,那么以下是一个sed解决方案:


我不知道是否真的有“\”,如果有,请根据需要使用
gsub()

我收到您的命令集的变量语法错误消息。@ankush,“变量语法错误”是什么?请显示实际的错误消息。您是否准确地剪切并粘贴了此代码?我是此脚本的新手。但仍在尝试您的命令会导致出现以下错误消息:“f&&/=/{s=”“;:未找到事件”
awk '
  /\\$/ {
    sub(/^[[:space:]]+/, "")     # trim leading whitespace
    sub(/[[:space:]]+\\$/, " ")  # remove the trailing backslash
    line = line $0
    next
  }
  line {
      printf("%s", line)
      line = ""
      sub(/^[[:space:]]+/, "")
  }
  1
'
awk '!f&&/=/{s=""; s=s FS $0;f=1;next}f&&!/=/{s=s FS $0}f&&/=/{f=0;print s;print;next} ' file
awk '
  /\\$/ {
    sub(/^[[:space:]]+/, "")     # trim leading whitespace
    sub(/[[:space:]]+\\$/, " ")  # remove the trailing backslash
    line = line $0
    next
  }
  line {
      printf("%s", line)
      line = ""
      sub(/^[[:space:]]+/, "")
  }
  1
'