파일의 각 줄 끝에 특정 파생 텍스트를 추가하는 방법은 무엇입니까?

파일의 각 줄 끝에 특정 파생 텍스트를 추가하는 방법은 무엇입니까?

(특정 텍스트는 Case 문을 사용하여 파일의 필드에서 파생됩니다.) 입력 파일:

MYFILEA|ssss|1111|                                  
MYFILEB|ffff|2222|                       
MYFILEC|ssss|3333|

Case 문은 각 줄의 5번째 문자를 사용하여 각 줄에 추가할 Case 문을 결정합니다.

A-'Apple'
B-'Banana'
C-'Carrot'

예상 출력:

MYFILEA|ssss|1111|Apple              
MYFILEB|ffff|2222|Banana           
MYFILEC|ssss|3333|Carrot

나의 현재 접근 방식은 다음과 같습니다.

rm MYOUTPUT.txt
touch MYOUTPUT.txt
filename="MYINPUT.txt"
while read line
do
  ENDTEXT=`echo $line | cut -c7`
  #echo $ENDTEXT
  case $ENDTEXT in
    A)
      APPTEXT="Apple" ;;
    B)
      APPTEXT="Banana" ;;
    C)
      APPTEXT="Carrots" ;;
    *)
      APPTEXT="XXXX" ;;
  esac


  echo $APPTEXT
  sed 's/$/'APPTEXT'/' >> MYOUTPUT.txt

답변1

순수한 배쉬:

스크립트 add_column.sh:

#! /usr/bin/env bash

set -u

# get 1st parameter as input filename
declare -r input_filename="$1"
# key
declare k=
# value
declare v=

# read all lines from input file
while read -r line; do
    #echo "l='$line'"

    # get key
    k="${line:6:1}"
    #echo "k='$k'"

    # determine value for each key value
    case "$k" in
        'A')
            v='Apple'
        ;;
        'B')
            v='Banana'
        ;;
        'C')
            v='Carrot'
        ;;
        *)
            echo "Unknown key '$k'"
            exit 1
        ;;
    esac

    # print result
    echo "$line$v"

done < "$input_filename"

그리고:

chmod +x add_column.sh

다음과 같이 실행하세요:

add_column.sh input.txt

결과:

MYFILEA|ssss|1111|Apple
MYFILEB|ffff|2222|Banana
MYFILEC|ssss|3333|Carrot

관련 정보