Cách sort theo alphabet trong linux mà không dùng đến command sort có sẵn


nếu thực hiện cat file này thì làm sao để mình viết lên rồi sort theo alphabet ạk? VD như: cat file.txt nó sẽ hiển thị:
ank
chr
bhu
->sau sort:
ank
bnu
chr
Thì phải làm như thế nào ạk?

Cậu thử lệnh này xem:

sort file.txt
4 Likes

dạ em có biết lệnh đó, ý em muốn hỏi là VD như hiện ra menu:
1.cat file.txt
2.cat file.txt &
3…
thì khi mình nhập !2 thì nó sẽ hiển thị kết quả sau khi sort ấy ạk.

Hi Hung,

Do me a favor.
Cậu thử loại bỏ toàn bộ suy nghĩ trong đầu cậu, đọc lại phần câu hỏi và comment của cậu, và cho tớ biết: cậu có hiểu ý của cậu là gì không? :smiley:


Giờ cậu thử diễn đạt lại cậu đang gặp vấn đề gì nhé.

  1. Hãy tóm tắt sơ qua cậu đang muốn làm gì nha.
  2. Trong quá trình cậu làm, cậu gặp vấn đề gì? Hãy kể chi tiết phần này nha.
  3. Cậu đã thử cách gì để giải quyết vấn đề chưa? Nếu ngắn gọn những điều cậu đã thử, nhưng thất bại (nó sẽ giúp bọn tớ loại trừ).

Thử xem :smiley:

4 Likes

dạ em xin lỗi vì cách hỏi ngớ ngẫn của mình :sweat_smile:
Ý em là bây giờ nếu mình ko sử dụng những command linux có sẵn để chạy chương trình, mà là mình phải tự viết mấy command đó, ở đây em hỏi là command sort ý. Mọi người có thể giúp em cách tạo command sort bằng code của mình, tức là tiếp nối code ở trên để nó có thể sort 1 file như file.txt chứa nội dung:
ank
chr
bnu
và sau khi chạy chương trình nó sẽ sort ra được kq:
ank
bnu
chr
Em cám ơn mọi người ạ…

Cảm ơn cậu vì thông tin mới nhé! :smiley:

Tớ sẽ có 1 vài câu hỏi ở đây cho cậu:

  1. Cậu có thể chia sẻ cho bọn tớ tại sao cậu cần phải tự viết sort command được không?
  2. Do cậu chưa đề cập tới ngôn ngữ mà cậu muốn implement, liệu cậu có thể share cho bọn tớ biết cậu muốn implement nó trên ngôn ngữ lập trình nào được không? Có vẻ như cậu đã post hình 1 đoạn code C ở trên. Tớ nghĩ sẽ tốt hơn nếu cậu post nó dưới dạng text. Giúp bọn tớ với nhé!
  3. Như cậu đã biết, sort command có rất nhiều chức năng. Cậu muốn dừng lại ở những chức năng nào của sort command?

Tớ chờ câu trả lời của cậu :smiley:

3 Likes

em xin tl:

  1. em đang tập viết 1 simple shell trong linux ấy ạ.
  2. em gửi:
#include <stdio.h>
#include <string.h>
#define MAXLINE 80


void getcommand(char command[])
{
	fgets(command, MAXLINE,stdin);
	short int len = strlen(command);
	command[len-1]=0;
}

int main(void)
{
	char command[MAXLINE];
	char* args[MAXLINE/2 + 1]; /* command line arguments */
	int should_run = 1; /* flag to determine when to exit program */
	while (should_run)
	{
		do
		{
			printf("osh>");
			fflush(stdout);
			getcommand(command);
		}while(command[0]==0);
	}
	return 0;
}
  1. e muốn trích xuất các từ trong file và sắp xếp chúng từ a – z giống như vd dưới đây ạk:

Hi Hung,

Tớ góp ý chút nha, đừng dùng thuật ngữ mà cậu không hiểu nha Hung :slight_smile: Cái này là lỗi nặng lắm, nó giống như cậu đang đấm vào mặt 1 cách vô cùng thô lỗ và thiếu tôn trọng những người được đào tạo cơ bản về Computer science.
Vậy nên chú ý nha! :slight_smile: (tớ hiểu cậu còn mới, vậy nên chưa sao cả).
Đây là định nghĩa về shell. Tớ hiểu ý cậu là cậu muốn viết 1 CLI đơn giản mô phỏng lại sort command, và đây là bài tập của cậu.

Tớ format lại code của cậu theo Markdown, lần sau nhớ dùng nhé Hung! :smiley:

#include <stdio.h>
#include <string.h>
#define MAXLINE 80

void getcommand(char command[])
{
    fgets(command, MAXLINE,stdin);
    short int len = strlen(command);
    command[len-1]=0;
}

int main(void)
{
    char command[MAXLINE];
    char* args[MAXLINE/2 + 1]; /* command line arguments */
    int should_run = 1; /* flag to determine when to exit program */

    while (should_run)
    {
        do
        {
            printf("osh>");
            fflush(stdout);
            getcommand(command);
        } while(command[0]==0);
    }
    return 0;
}

Rồi, có vẻ như cậu đã đạt tới trình độ dùng hàm được rồi, cùng với cách đặt tên biến khá tốt, vậy nên tớ nghĩ cậu sẽ ko gặp khó khăn gì với việc lấy dữ liệu từ file ra, sau đó sort nhỉ (simple bubble sort should work). Đây là thao tác tương đối cơ bản, tớ nghĩ cậu có thể dễ dàng tìm được.

À, cậu có 1 vấn đề ở code này:

int main(void)

hàm main này không không lấy được argument đâu cậu. Cậu cần đổi sang thế này:

int main(int argc, char **argv)

Nó sẽ giúp cậu lấy đc argument đầu vào. Cậu cũng có thể tự search được cách dùng của hàm main kiểu này, phải không?

Regards,
Library

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?