Замена обратной косой черты с последующим переводом строки с помощью awk - PullRequest
0 голосов
/ 29 марта 2011

У меня есть файл в следующем формате:

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 голосов
/ 29 марта 2011
awk '!f&&/=/{s=""; s=s FS $0;f=1;next}f&&!/=/{s=s FS $0}f&&/=/{f=0;print s;print;next} ' file

Я не знаю, действительно ли есть "\", если есть, используйте gsub(), в зависимости от ситуации

0 голосов
/ 29 марта 2011
awk '
  /\\$/ {
    sub(/^[[:space:]]+/, "")     # trim leading whitespace
    sub(/[[:space:]]+\\$/, " ")  # remove the trailing backslash
    line = line $0
    next
  }
  line {
      printf("%s", line)
      line = ""
      sub(/^[[:space:]]+/, "")
  }
  1
'
0 голосов
/ 29 марта 2011

Если вы не ограничены awk, в FAQ sed есть решение sed :

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