[Lập trình Shell] Bài tập in file văn bản theo dòng chẵn với nội dung dòng là chữ hoa

2269

Chào các bạn, nhằm giúp các bạn áp dụng lập trình bash shell vào thực tế hoặc làm bài tập bash shell thi cử. Thì mình sẽ cung cấp những bài tập cơ bản và nâng cao giúp các bạn trao dồi kĩ năng lập trình bash shell.

Bài tập “in file văn bản theo dòng chẵn với nội dung dòng là chữ hoa”

Đề bài:

– Viết chương trình với tham số đầu vào là tên 1 file văn bản (ví dụ thơ tiếng anh), sau đó in file văn bản theo từng dòng chẵn và chuyển từng dòng đó nội dung thành chữ hoa.

Code mẫu:

– Ta sẽ đọc từng dòng của file thơ tiếng anh với cơ chế ‘while read line ; do … done < file‘ .
– Làm biến đếm count, dòng nào chia hết số 2 là dòng chẵn và in nội dung của dòng đó thành in hoa.

+ Tạo nội dung bài thơ mẫu

# cat << EOF> poem-english.txt
And treated me like a normal kid?
Well even if you don’t,
Thank you, as you now mean the world to me.
Remember when I first cried in front of you?
When times were tough for me.
And you said to me,
“It’s okay, I’m here.”
And it all seemed a little better?
Well even if it’s slipped your mind,
It made me who I am today.
Remember when you fell apart?
You couldn’t cope without your Dad.
And I said to you,
“It’s okay, I’m here for you.”
And you put back up your mask?
Because it had slipped that day and I saw,
The real you, scared and hiding.
Remember when I left you?
To move on to my next stage.
And you said to me,
‘I’ll always be here for you.’
And we hugged and talked for hours?
You wanted me to chase my dreams,
And helped me through my fear.
Remember when I became you?
And you took to the sidelines.
And I said to you,
‘I’m here to carry on.’
And you watched like a proud parent,
As I took my first steps?
Now it’s me remembering you,
As you lie in the ground.
I’ll always remember your calming voice,
And be grateful for what I found.
EOF

 
+ Code mẫu

#!/bin/bash
# Author : Quach Chi Cuong
# Website : https://cuongquach.com/

FILE_NAME=$1

# Check file co ton tai khong
if [ ! -f $FILE_NAME ];then
	echo "File ${FILE_NAME} khong ton tai."
	echo "Thoat."
	exit 1
fi


# Doc noi dung tung dong cua file van ban
count=0
while read line
do
	((count++))
	odd_line=$(expr ${count} % 2)
	if [ ${odd_line} -eq 0 ];then
		# In hoa noi dung dong chan, chu hoa
		echo ${line^^}
	fi
done < ${FILE_NAME}

exit 0

 
Output:

# chmod +x exercise1.sh
# ./exercise1.sh poem-english.txt
WELL EVEN IF YOU DON’T,
REMEMBER WHEN I FIRST CRIED IN FRONT OF YOU?
AND YOU SAID TO ME,
AND IT ALL SEEMED A LITTLE BETTER?
IT MADE ME WHO I AM TODAY.
YOU COULDN’T COPE WITHOUT YOUR DAD.
“IT’S OKAY, I’M HERE FOR YOU.”
BECAUSE IT HAD SLIPPED THAT DAY AND I SAW,
REMEMBER WHEN I LEFT YOU?
AND YOU SAID TO ME,
AND WE HUGGED AND TALKED FOR HOURS?
AND HELPED ME THROUGH MY FEAR.
AND YOU TOOK TO THE SIDELINES.
‘I’M HERE TO CARRY ON.’
AS I TOOK MY FIRST STEPS?
AS YOU LIE IN THE GROUND.
AND BE GRATEFUL FOR WHAT I FOUND.

 
Như vậy là ta đã hoàn thành 1 bài tập bash shell nữa rồi.

Previous article[Python] Hướng dẫn cài đặt Python 2.7.13 trên CentOS/Ubuntu
Next article[Lập trình Shell] Bài tập nhập chuỗi, đếm số lượng từ và in mỗi từ 1 dòng
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !

1 COMMENT

  1. dòng code số 20 sửa lại từ odd_line=$(expr {count} % 2)
    thành odd_line=$(expr ${count} % 2)
    bài viết rất hay ạ , phù hợp vs ng đang học như em 😀

LEAVE A REPLY

Please enter your comment!
Please enter your name here