![파일의 각 줄 끝에 특정 파생 텍스트를 추가하는 방법은 무엇입니까?](https://linux55.com/image/223363/%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EA%B0%81%20%EC%A4%84%20%EB%81%9D%EC%97%90%20%ED%8A%B9%EC%A0%95%20%ED%8C%8C%EC%83%9D%20%ED%85%8D%EC%8A%A4%ED%8A%B8%EB%A5%BC%20%EC%B6%94%EA%B0%80%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
(특정 텍스트는 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