使用awk替换反斜杠后跟换行符

时间:2011-03-29 10:47:26

标签: 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

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

3 个答案:

答案 0 :(得分:0)

如果您不仅限于awk,sed FAQ中有一个sed解决方案:

sed -e :a -e '/\\$/N; s/\\\n//; ta' file

答案 1 :(得分:0)

awk '!f&&/=/{s=""; s=s FS $0;f=1;next}f&&!/=/{s=s FS $0}f&&/=/{f=0;print s;print;next} ' file

我不知道是否真的有“\”,如果有,请酌情使用gsub()

答案 2 :(得分:0)

awk '
  /\\$/ {
    sub(/^[[:space:]]+/, "")     # trim leading whitespace
    sub(/[[:space:]]+\\$/, " ")  # remove the trailing backslash
    line = line $0
    next
  }
  line {
      printf("%s", line)
      line = ""
      sub(/^[[:space:]]+/, "")
  }
  1
'