ファイルの各行の末尾に特定の派生テキストを追加するには?

ファイルの各行の末尾に特定の派生テキストを追加するには?

(特定のテキストは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

おすすめ記事