Major File Reformat

Hello, I have many lengthy files that need to be reformatted. I was hoping a sed or awk script could fix this.

Here is an example of the original format:

P0037
# Degree: 32.999981
# COMMAND: 03 (#01A) Scale 1.296875, 52 (Wooden Crate w/ #2 Label, Bahko)
v -3328.000000 12.101541 437.000000
P0038
# Degree: 115.120972
# COMMAND: 0A (#000) Scale 1.000000, 4B (Television Monitor)
v -3394.000000 -123.668777 419.000000
P0039
# Degree: 127.290268
# COMMAND: 03 (#052) Scale 1.000000, 2D (Computer Keyboard)
v -3386.000000 -127.500473 416.000000
P003A
# Degree: 126.991837
# COMMAND: 03 (#051) Scale 1.000000, 26 (Desk w/ Kickplate)
v -3388.000000 -139.089020 421.000000

And this is how the above should be formatted:

var P0037 : Transform = Instantiate(prop52, (Vector3(-3328.000000, 12.101541, 437.000000) * scaleFactor) + mapPos, Quaternion.Euler(prop52.transform.eulerAngles.x, 32.999981, prop52.transform.eulerAngles.z));
P0037.transform.localScale = Vector3(1.296875, 1.296875, 1.296875) * scale;
P0037.transform.parent = objectControl.transform;

var P0038 : Transform = Instantiate(prop4B, (Vector3(-3394.000000, -123.668777, 419.000000) * scaleFactor) + mapPos, Quaternion.Euler(prop4B.transform.eulerAngles.x, 115.120972, prop4B.transform.eulerAngles.z));
P0038.transform.localScale = Vector3(1.000000, 1.000000, 1.000000) * scale;
P0038.transform.parent = objectControl.transform;

var P0039 : Transform = Instantiate(prop2D, (Vector3(-3386.000000, -127.500473, 416.000000) * scaleFactor) + mapPos, Quaternion.Euler(prop2D.transform.eulerAngles.x, 127.290268, prop2D.transform.eulerAngles.z));
P0039.transform.localScale = Vector3(1.000000, 1.000000, 1.000000) * scale;
P0039.transform.parent = objectControl.transform;

var P003A : Transform = Instantiate(prop26, (Vector3(-3388.000000, -139.089020, 421.000000) * scaleFactor) + mapPos, Quaternion.Euler(prop26.transform.eulerAngles.x, 126.991837, prop26.transform.eulerAngles.z));
P003A.transform.localScale = Vector3(1.000000, 1.000000, 1.000000) * scale;
P003A.transform.parent = objectControl.transform;

I am attaching one of the files if it helps.
If there is any confusion or more information is needed, please let me know. Thank you very much! :slight_smile:

awk 'function printme(){
  printf "var "a " : Transform = Instantiate(prop"d", (Vector3("e") * scaleFactor) + mapPos, "
  print "Quaternion.Euler(prop"d".transform.eulerAngles.x, "b", prop"d".transform.eulerAngles.z));"
  print a".transform.localScale = Vector3("c OFS c OFS substr(c,0,length(c)-1)") * scale;"
  print a".transform.parent = objectControl.transform;\n"
} /^P/{a=$0} /Degree/{b=$3} /COMMAND/{c=$6;d=$7} /^v/{e=$2", "$3", "$4; printme()} ' infile

If solaris, use nawk

--ahamed

2 Likes

You are a genius and I am envious of your abilities. It took me longer to write my original post than took you to respond with a solution.