From a752c4f14e8acfb02f6f530fc6affc2b71d99201 Mon Sep 17 00:00:00 2001
From: Philipp Rost <philipp.rost@fau.de>
Date: Mon, 13 Feb 2023 18:44:37 +0100
Subject: [PATCH] LC '194. Transpose File' solution

---
 .gitignore            |  2 +-
 194-file.txt          |  4 ++++
 194-transpose-file.sh | 23 +++++++++++++++++++++++
 3 files changed, 28 insertions(+), 1 deletion(-)
 create mode 100644 194-file.txt
 create mode 100755 194-transpose-file.sh

diff --git a/.gitignore b/.gitignore
index 8b13789..11d22ac 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-
+194-file-transposed.txt
diff --git a/194-file.txt b/194-file.txt
new file mode 100644
index 0000000..5087d2f
--- /dev/null
+++ b/194-file.txt
@@ -0,0 +1,4 @@
+name age gender
+alice 21 female
+ryan 30 male
+steve 14 male
diff --git a/194-transpose-file.sh b/194-transpose-file.sh
new file mode 100755
index 0000000..673a566
--- /dev/null
+++ b/194-transpose-file.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+# solution for 
+#    https://leetcode.com/problems/transpose-file/
+
+#export PS4="\$LINENO: "
+#set -xv
+
+file="194-file.txt"
+transposed_file="194-file-transposed.txt"
+# delete file contents
+cat /dev/null > $transposed_file
+
+# count ' ' (spaces) in the first line as the are the delimiter
+#   no trailing spaces assumed
+#   +1 because there is always one delimiter less than entries
+nmb_cols=$(($(head -1 194-file.txt | grep -o " " | wc -l) + 1))
+# iterate over evey column
+for i in $(seq 1 $nmb_cols); do
+    # extract column, replace newlines with spaces, append to output file
+    cut -d " " -f $i < $file | tr "\n" " " >> $transposed_file
+    # append newline for proper formatting
+    echo "" >> $transposed_file
+done
-- 
GitLab