home

Code Library

#!/usr/bin/bash
Tmp=/tmp/$$
Tmp1=/tmp/$$_$$
Tmp2=/tmp/$$_$$_$$
Tmp3=/tmp/$$_$$_$$_$$
trap 'exit 0' INT HUP QUIT TERM ALRM USR1
trap 'rm -f "$Tmp" "$Tmp1" "$Tmp2" "$Tmp3"' EXIT
rm -f "$Tmp"  >/dev/null 2>&1
rm -f "$Tmp1"  >/dev/null 2>&1
rm -f "$Tmp2"  >/dev/null 2>&1
rm -f "$Tmp3"  >/dev/null 2>&1
#================================================================
# paste -d' ' file1 file2 > output_file

source ~/bash.library

function implColomatic() {
    local tmp1="/tmp/temp_$$"
    local tmp2="/tmp/temp_$$_$$"
    local tmp3="/tmp/temp_$$_$$_$$"

    # Get the filename from the command-line argument
    local filename1="$1"
    local filename2="$2"

    # Check if a filename is are provided
    if [ -z "$filename1" ]; then
      echo "Usage:  "
      exit 1
    fi
    if [ -z "$filename2" ]; then
      echo "Usage:  "
      exit 1
    fi

    # Check if the files exist
    if [ ! -f "$filename1" ]; then
      echo "Error: File '$filename' not found."
      exit 1
    fi
    if [ ! -f "$filename2" ]; then
      echo "Error: File '$filename' not found."
      exit 1
    fi
    cat "$filename1" > $tmp1
    cat "$filename2" > $tmp2

    if [ "$DELIM" == "," ]; then                                                                                               
        paste "$tmp1" "$tmp2" | sed 's/\t/,/g'
    else
        if [ "$BAR" == "|" ]; then                                                                                               
            paste "$tmp1" "$tmp2" | sed 's/\t//g'
        else
            paste "$tmp1" "$tmp2" | sed 's/\t/ /g'
        fi
    fi
    rm -f "$tmp1" >/dev/null 2>&1
    rm -f "$tmp2" >/dev/null 2>&1
    rm -f "$tmp3" >/dev/null 2>&1
}

DELIM=" "
BAR=" "
SORT=""
W=0
while getopts "sbn:2:3:4:5:c" arg
do
    case $arg in
        s) SORT="YES"
           ;;
        b) BAR="|"
           ;;
        n) W=$OPTARG
           ;;
        2) DELIM=""
           rm -f "split_0" "split_1" "split_2" "split_3" "split_4" "split_5" >/dev/null 2>&1
           cp "$OPTARG" "split_0"
           trim_leading_whitespace_file "split_0"
           justify_file "split_0" "44"
           sort_file "split_0" "$SORT"
#           indentomatic -f split_0 
           split_file_n "split_0" "2" "split_"
           truncate_file_lines "split_1" $W 
               padout_file_lines "split_1"
               string_before_file_lines "split_1" "$BAR"
           truncate_file_lines "split_2" $W 
               padout_file_lines "split_2"
               string_before_file_lines "split_2" "$BAR"
               string_after_file_lines  "split_2" "$BAR"

           implColomatic "split_1"    "split_2"    "$DELIM"
           rm -f "split_0" "split_1" "split_2" "split_3" "split_4" "split_5" >/dev/null 2>&1
           exit 0
           ;;
        3) DELIM=" "
           rm -f "split_0" "split_1" "split_2" "split_3" "split_4" "split_5" >/dev/null 2>&1
           cp "$OPTARG" "split_0"
           sort_file "split_0" "$SORT"
           split_file_n "split_0" "3" "split_"
           truncate_file_lines "split_1" $W 
               padout_file_lines "split_1"
                   string_before_file_lines "split_1" "$BAR"
           truncate_file_lines "split_2" $W 
               padout_file_lines "split_2"
                   string_before_file_lines "split_2" "$BAR"
           truncate_file_lines "split_3" $W 
               padout_file_lines "split_3"
                   string_before_file_lines "split_3" "$BAR"
                   string_after_file_lines  "split_3" "$BAR"

           implColomatic "split_1"    "split_2"    "$DELIM"    > "$Tmp1"
           implColomatic "$Tmp1"      "split_3"    "$DELIM"
           rm -f "split_0" "split_1" "split_2" "split_3" "split_4" "split_5" >/dev/null 2>&1
           exit 0
           ;;
        4) DELIM=" "
           rm -f "split_0" "split_1" "split_2" "split_3" "split_4" "split_5" >/dev/null 2>&1
           cp "$OPTARG" "split_0"
           sort_file "split_0" "$SORT"
           split_file_n "split_0" "4" "split_"
           truncate_file_lines "split_1" $W 
               padout_file_lines "split_1"
                   string_before_file_lines "split_1" "$BAR"
           truncate_file_lines "split_2" $W 
               padout_file_lines "split_2"
                   string_before_file_lines "split_2" "$BAR"
           truncate_file_lines "split_3" $W 
               padout_file_lines "split_3"
                   string_before_file_lines "split_3" "$BAR"
           truncate_file_lines "split_4" $W 
               padout_file_lines "split_4"
                   string_before_file_lines "split_4" "$BAR"
                   string_after_file_lines  "split_4" "$BAR"
           implColomatic "split_1"    "split_2"    "$DELIM"    > "$Tmp1"
           implColomatic "$Tmp1"      "split_3"    "$DELIM"    > "$Tmp2"
           implColomatic "$Tmp2"      "split_4"    "$DELIM"
           rm -f "split_0" "split_1" "split_2" "split_3" "split_4" "split_5" >/dev/null 2>&1
           exit 0
           ;;
        5) DELIM=" "
           rm -f "split_0" "split_1" "split_2" "split_3" "split_4" "split_5" >/dev/null 2>&1
           cp "$OPTARG" "split_0"
           sort_file "split_0" "$SORT"
           split_file_n "split_0" "5" "split_"
           truncate_file_lines "split_1" $W 
               padout_file_lines "split_1"
                   string_before_file_lines "split_1" "$BAR"
           truncate_file_lines "split_2" $W 
               padout_file_lines "split_2"
                   string_before_file_lines "split_2" "$BAR"
           truncate_file_lines "split_3" $W 
               padout_file_lines "split_3"
                   string_before_file_lines "split_3" "$BAR"
           truncate_file_lines "split_4" $W 
               padout_file_lines "split_4"
                   string_before_file_lines "split_4" "$BAR"
           truncate_file_lines "split_5" $W 
               padout_file_lines "split_5"
                   string_before_file_lines "split_5" "$BAR"
                   string_after_file_lines  "split_5" "$BAR"
           implColomatic "split_1"    "split_2"    "$DELIM"    > "$Tmp1"
           implColomatic "$Tmp1"      "split_3"    "$DELIM"    > "$Tmp2"
           implColomatic "$Tmp2"      "split_4"    "$DELIM"    > "$Tmp3"
           implColomatic "$Tmp3"      "split_5"    "$DELIM"
           rm -f "split_0" "split_1" "split_2" "split_3" "split_4" "split_5" >/dev/null 2>&1
           exit 0
           ;;
        c) DELIM=","
           ;;
    esac
done
shift $(($OPTIND - 1))

if [ $# -gt 1 ]; then
    implColomatic "$1" "$2" "$DELIM" > "$Tmp2"
    shift
    shift
    for item in "$@"; do
        implColomatic "$Tmp2" "$item" "$DELIM" > "$Tmp1"
        cp "$Tmp1" "$Tmp2"
    done
    cat "$Tmp2"
fi