awk script storage

awk script storage

By widehyo
" ~/.vim/ftplugin/awk.vim

iabbrev <buffer> \begin; BEGIN {<CR><C-u>}
iabbrev <buffer> \end; END {<CR><C-u>}
iabbrev <buffer> \for; for (i = 1; i <= NF; i++) {}
iabbrev <buffer> \forarr; for (idx in arr) {}
iabbrev <buffer> \printarr; for (idx in arr) {<CR>print "idx: " idx " arr[idx]: " arr[idx]<CR>
iabbrev <buffer> \striparr; for (idx in arr) {<CR>arr[idx] = strip(arr[idx])<CR>
iabbrev <buffer> \surr; function surround_str(str, start, end) {<CR>return start str end<CR>
iabbrev <buffer> \surrd; "\""str"\""
iabbrev <buffer> \surrq; "'"str"'"
iabbrev <buffer> \surrp; "("str")"
iabbrev <buffer> \surrs; "["str"]"
iabbrev <buffer> \surrb; "<"str">"
iabbrev <buffer> \surrc; "{"str"}"
iabbrev <buffer> \split; split(str, arr, sep)
iabbrev <buffer> \strip; function strip(str) {<CR>gsub(/^\s+\|\s+$/, "", str)<CR>return str<CR>}
iabbrev <buffer> \join; function join(arr, sep) {<CR>acc = arr[1]<CR>for (i = 2; i <= length(arr); i++) {<CR>acc = acc sep arr[i]<CR>return acc<CR>}
iabbrev <buffer> \gsub; gsub(regex, replace, str)

setlocal tabstop=2
setlocal shiftwidth=2
vnoremap <buffer> gcc :s/^/# /<CR>

column_replace.awk

BEGIN {
    FS = "\""
    OFS = "\""
    comment_str = "주관부서,예산,기대효과,홍보채널"
    split(comment_str, comment_arr, ",")
    name_str = "department_name,budget,expected_effect,information_channel"
    split(name_str, name_arr, ",")
}
{
    gsub(/location_name/, name_arr[NR], $1)
    print $1, comment_arr[NR], $3
}

column_to_pylist.awk

function surround_str(str, start, end) {
    return start str end
}

function strip(str) {
    gsub(/^\s+|\s+$/, "", str)
    return str
}

function join(arr, sep) {
    acc = arr[1]
    for (i = 2; i <= length(arr); i++) {
        acc = acc sep arr[i]
    }
    return acc
}

{
    split($0, arr, /: /)
    gsub(/idp.fv_/, "", arr[1])
    split(arr[2], column_arr, /,/)
    printf arr[1] "_field = "
    for (idx in column_arr) {
        column_arr[idx] = surround_str(strip(column_arr[idx]), "'", "'")
    }
    print surround_str(join(column_arr, ","), "[", "]")
}

column_to_tuple.awk

function strip(str) {
    gsub(/^\s+|\s+$/, "", str)
    return str
}
function join(arr, sep) {
    acc = arr[1]
    for (i = 2; i <= length(arr); i++) {
        acc = acc sep arr[i]
    }
    return acc
}
function surround_str(str, start, end) {
    return start str end
}
BEGIN {
    FS = "|"
}
{
    arr[NR] = strip($1)
}
END {
    print surround_str(join(arr, ","), "(", ")")
}

csv_to_insert_sql.awk

function join(arr, sep) {
    acc = arr[1]
    for (i = 2; i <= length(arr); i++) {
        acc = acc sep arr[i]
    }
    return acc
}
function strip(str) {
    gsub(/^\s+|\s+$/, "", str)
    return str
}
function surround_str(str, start, end) {
    return start str end
}
function apply_strip(format_arr) {
    for (idx in format_arr) {
        format_arr[idx] = strip($idx)
    }
}
function transform_header(header_str) {
    split(header_str, header_arr, ",")
    for (idx in header_arr) {
        header_arr[idx] = surround_str(header_arr[idx], "`", "`")
    }
    result = join(header_arr, ",")
    return result
}
function transform_content(content_str) {
    split(content_str, content_arr, ",")
    apply_strip(content_arr)
    content_arr[2] = surround_str(content_arr[2], "'", "'")
    content_arr[3] = surround_str(content_arr[3], "'", "'")
    content_arr[4] = surround_str(content_arr[4], "'", "'")
    result = join(content_arr, ",")
    return result
}
BEGIN {
    cmd = "wc -l < " ARGV[1]
    cmd | getline num_lines
    close(cmd)
    FS = ","
    OFS = ","
    header_format_str = "연번,행정동,관리단체,설치장소(도로명주소),위도,경도"
    content_format_str = "1,광평동,대한민국특수임무유공자회,구미시 구미대로 14길 7-5,36.107064,128.364115"
}
NR == 1 {
    header = ""
    insert_str = transform_header(header_format_str)
    print "INSERT INTO my_table(" insert_str ") VALUES"
}
NR > 1 && NR < num_lines {
    row_str = transform_content(content_format_str)
    print "(" row_str "),"
}
NR == num_lines {
    row_str = transform_content(content_format_str)
    print "(" row_str ");"
}

csv_to_json.awk

function transform(arr, out_arr) {
    count = 1
    for (key in arr) {
        out_arr[count] = key ":" arr[key]
        count++
    }
}
function join(arr, sep) {
    acc = arr[1]
    for (i = 2; i <= length(arr); i++) {
        acc = acc sep arr[i]
    }
    return acc
}
BEGIN {
    cmd = "wc -l < " ARGV[1]
    cmd | getline num_lines
    close(cmd)
    FS = ","
    print "["
}
NR == 1 {
    split($0, header_arr, FS)
    for (idx in header_arr) {
        header_arr[idx] = "\"" header_arr[idx] "\""
    }
}
NR > 1 {
    for (idx in header_arr) {
        res[NR][header_arr[idx]] = $idx
    }
    res[NR][header_arr[2]] = "\"" $2 "\""
    res[NR][header_arr[3]] = "\"" $3 "\""
    res[NR][header_arr[4]] = "\"" $4 "\""
}
END {
    for (idx in res) {
        transform(res[idx], out_res)
        cur = join(out_res, ",")
        if (idx != num_lines) {
            print "    {" cur "},"
        } else {
            print "    {" cur "}"
        }
    }
    print "]"
}

git_changed.awk

function strip(str) {
    gsub(/^\s+|\s+$/, "", str)
    return str
}

/Changes not staged for commit:/,/Untracked files:/{
    if ($0 ~ /modified/) {
        print substr($0,14)
    }
}
/Untracked files:/{
    uflag = 1
}
uflag {
    lnum++
    if (lnum >= 3) {
        print strip($0)
    }
    if ($0 ~ /^$/) {
        exit
    }
}

investigate_column_with_type.awk

function strip(str) {
    gsub(/^\s+|\s+$/, "", str)
    return str
}
BEGIN {
    FS = "|"
    OFS = "|"
    table_count = 0
    split("", meta_arr, "")
    for (idx in meta_arr) {
        print "idx:",idx,"meta_arr[idx]:",meta_arr[idx]
    }
}
/Table/{
    col_count = 0
    split($0, arr, /\s+/)
    gsub(/"/, "", arr[3])
    meta_arr[++table_count] = arr[3]
    split("", table_arr, "")
}
NF == 9 && !/Column/{
    col_count++
    key = meta_arr[table_count]
    table_arr[col_count] = strip($1) ":" strip($2)
    for (idx in table_arr) {
        col_info_arr[key, col_count] = table_arr[col_count]
    }
}
END {
    for (index_ in col_info_arr) {
        split(index_, key_arr, SUBSEP)
        print "["key_arr[1]"("key_arr[2]")]",col_info_arr[index_]
    }
}

investigate_columns.awk

function strip(str) {
    gsub(/^\s+|\s+$/, "", str)
    return str
}
BEGIN {
    FS = "|"
    table_count = 0
    split("", meta_arr, "")
    for (idx in meta_arr) {
        print "idx:",idx,"meta_arr[idx]:",meta_arr[idx]
    }
    print length(meta_arr)

}
/Table/{
    split($0, arr, /\s+/)
    gsub(/"/, "", arr[3])
    meta_arr[++table_count] = arr[3]
    col_info_arr[meta_arr[table_count]] = ""
}
NF == 9 && !/Column/{
    col_info_arr[meta_arr[table_count]] = col_info_arr[meta_arr[table_count]] "," strip($1) 
}
END {
    for (idx in col_info_arr) {
        print idx ": " col_info_arr[idx]
    }

}

line_to_arr.awk

function strip(str) {
    gsub(/^\s+|\s+$/, "", str)
    return str
}

BEGIN {
    FS = "|"
}
{
    arr[NR] = strip($1)
}
END {
    for (idx in arr) {
        print "idx:",idx,"arr[idx]:",arr[idx]
    }
}

make_code.awk

function strip(str) {
    gsub(/^\s+|\s+$/, "", str)
    return str
}

BEGIN {
    RS = ""
}
NR == 1{
    split($0, lines, "\n")
    for (idx in lines) {
        lines[idx] = strip(lines[idx])
        declare[idx] = lines[idx]
    }
}
NR == 2{
    split($0, lines, "\n")
    for (idx in lines) {
        lines[idx] = strip(lines[idx])
    }
    for (idx in lines) {
        split(lines[idx], info_arr, ",")
        info_arr[5] = strip(info_arr[5])
        comment[idx] = substr(info_arr[5], 4)
    }
}
NR == 3{

    for (idx in declare) {
        print declare[idx]
        print "    '''"
        print "    " comment[idx], "생성 프로세서"
        print "    '''"
        print $0
        print "\n\n"
    }
}

pycode_work1.awk

BEGIN {
    FS = ","
}
{
    for (i = 1; i <= NF; i++) {
        print $i "_seq_max = max([data[0] for data in " $i "_data]) + 1"
    }
}

pycode_work2.awk

BEGIN {
    FS = ","
}
{
    $4 = "'" $4 "'"
    $5 = "'" $5 "'"
    $7 = "'" $7 "'"
    $8 = "True"
    printf ",("
    for (i = 1; i <= NF; i++) {
        printf $i ","
    }
    printf ")\n"
}

pycode_work3.md

`p1.awk`

function strip(str) {
    gsub(/^\s+|\s+$/, "", str)
    return str
}

BEGIN {
    RS = ""
}
NR == 1{
    split($0, lines, "\n")
    for (idx in lines) {
        lines[idx] = strip(lines[idx])
    }
    for (idx in lines) {
        if (idx == 1) continue
        split(lines[idx], arr, ",")
        print arr[3]
    }
}


`p2.awk`

function strip(str) {
    gsub(/^\s+|\s+$/, "", str)
    return str
}

BEGIN {
    RS = ""
}
NR == 2{
    split($0, lines, "\n")
    for (idx in lines) {
        lines[idx] = strip(lines[idx])
    }
    for (idx in lines) {
        if (idx == 1) continue
        split(lines[idx], arr, ",")
        print arr[3]
    }
}



33950  2025-03-17_08:46:02 awk -f p1.awk ~/temp.txt
33951  2025-03-17_08:46:11 awk -f p1.awk ~/temp.txt  | sort | uniq
33952  2025-03-17_08:46:27 awk -f p1.awk ~/temp.txt  | sort | uniq > uniq_amddong.txt
33954  2025-03-17_08:47:27 awk -f p2.awk ~/temp.txt
33955  2025-03-17_08:47:37 awk -f p2.awk ~/temp.txt  | sort | uniq
33956  2025-03-17_08:47:54 awk -f p2.awk ~/temp.txt  | sort | uniq > fv_address_unique.txt

python_error_to_gF_format.awk

BEGIN {
    FS = "\""
}
{
    split($3, arr, /\s+/)
    print $2 ":" arr[3]
}

skeleton_to_iabbr.awk

NR == 1 {
  to = $0
}
NR > 1 {
  to = to "<CR>" $0
}
END {
  print "inoremap \\abbr; " to
}

swap_camel_snake.awk

function snake_to_camel(text, result) {
  result = ""
  split(text, arr, "_")
  for (idx in arr) {
    result = result toupper(substr(arr[idx], 0, 1)) substr(arr[idx], 2)
  }
  result = tolower(substr(result, 0, 1)) substr(result, 2)
  return result
}
function camel_to_snake(text, result) {
  result = text
  while (match(result, /[A-Z]/) > 1) {
    result = substr(result, 0, RSTART - 1) "_" tolower(substr(result, RSTART, 1)) substr(result, RSTART + 1)
  }
  return result
}
{
  split("|",arr,$0)
  gsub(/^_+/, "", arr[0])
  if (match(arr[0], "_")) {
    print snake_to_camel(arr[0])
  } else if (match(arr[0], /[A-Z]/) > 1) {
    print camel_to_snake(arr[0])
  } else {
    print arr[0]
  }
}

target_column_uniq.awk

BEGIN {
    FS = ","
}
{
    if (!uniq[$1,$2,$3]++) print $1,$2,$3
}

tuple_reorder.awk

function surround_str(str, start, end) {
    return start str end
}

BEGIN {
    FS = ","
    OFS = ","
}
{
    gsub(/^\s+\(/, "", $0)
    gsub(/\),\s+$/, "", $0)
    target = $3 "," $2 "," $1
    print surround_str(target, "(", "),")
}


word_info.awk

function strip(str) {
    gsub(/^\s+|\s+$/, "", str)
    return str
}

BEGIN {
    RS = ""
    FS = ":"
}
NR == 1{
    print NR
    split($0, lines, "\n")
    for (idx in lines) {
        lines[idx] = strip(lines[idx])
    }
    for (idx in lines) {
        split(lines[idx], arr, ":")
        left_key = strip(arr[1])
        left_word[left_key] = -1
    }
    for (idx in left_word) {
        print idx, left_word[idx]
    }
}
NR == 2{
    print NR
    split($0, lines, "\n")
    for (idx in lines) {
        lines[idx] = strip(lines[idx])
    }
    for (idx in lines) {
        split(lines[idx], arr, ":")
        right_key = strip(arr[1])
        right_word[right_key] = 1
        is_contain_type = match(arr[2], /\[([^]]+)\]/, type_arr)
        if (is_contain_type) {
            field_type = type_arr[1]
            right_type[right_key] = field_type
        }
    }
    for (idx in right_word) {
        print idx, right_word[idx]
    }
}
END {
    print "\nword info:\n"
    for (idx in left_word) {
        word_info[idx] += left_word[idx]
    }
    for (idx in right_word) {
        word_info[idx] += right_word[idx]
    }
    for (idx in word_info) {
        if (word_info[idx] == 1) {
            # print idx, word_info[idx]
            print idx " : Optional[" right_type[idx] "]"
        }
    }
}