#!/usr/bin/gawk -f # # # Remove `/../' and `/./' from the given path. # function rewritepath(path, i, k, n, x, y) { n = split(path, x, /\/+/); k = 0; for (i=1; i<=n; i++) { if (x[i] == "") { if (i == n) y[k++] = ""; continue; } if (x[i] == ".") continue; else if (x[i] == "..") { if (k >= 1) k--; } else y[k++] = x[i]; } path = y[0]; for (i=1; i < k; i++) path = path "/" y[i]; return (path); } BEGIN { while (getline line > 0) printf ("%s --> %s\n", line, rewritepath(line)); exit (0); }