精华内容
下载资源
问答
  • linux管道通信例程

    2019-04-30 14:53:15
    两个独立的程序 master 和 client,要求这两个程序完成以下功能: (1) master 和 client 分别创建一个子进程; (2) client 完成创建子进程后,其子进程等待用户从键盘输入一串字符串,并将字符串通 ...
  • 编写程序实现进程的管道通信。用系统调用pipe( )建立一管道,二个子进程P1和P2分别向管道各写一句话: Child 1 is sending a message! Child 2 is sending a message! 父进程从管道中读出二个来自子进程的信息并...
  • Linux中进程的通信方式有信号,管道,共享内存,消息队列socket等。其中管道是*nix系统进程间通信的最古老形式,所有*nix都提供这种通信方式。管道是一种半双工的通信机制,也就是说,它只能一端用来读,另外一端...
  • linux管道

    2021-01-20 12:44:47
    linux管道可以用于linux程序之间,linux命令之间以及linux程序和命令之间的通信。 在shell中使用管道的格式: command1 | command2 | command3 代表command1的标准输出作为command2的标准输入使用,而command2的...
  • linux管道使用_如何在Linux上使用管道

    千次阅读 2020-10-07 18:38:47
    linux管道使用Fatmawati Achmad Zaenuri/Shutterstock.comFatmawati Achmad Zaenuri / Shutterstock.comUse Linux pipes to choreograph how command-line utilities collaborate. Simplify complex processes and ...
    linux管道使用

    linux管道使用

    Linux terminal on a laptop
    Fatmawati Achmad Zaenuri/Shutterstock.com Fatmawati Achmad Zaenuri / Shutterstock.com

    Use Linux pipes to choreograph how command-line utilities collaborate. Simplify complex processes and boost your productivity by harnessing a collection of standalone commands and turning them into a single-minded team. We show you how.

    使用Linux管道来编排命令行实用程序的协作方式。 通过利用一系列独立命令并将它们变成专心致志的团队,简化复杂的流程并提高生产率。 我们向您展示如何。

    管道无处不在 (Pipes Are Everywhere)

    Pipes are one of the most useful command-line features that Linux and Unix-like operating systems have. Pipes are used in countless ways. Look at any Linux command line article—on any web site, not just ours—and you’ll see that pipes make an appearance more often than not. I reviewed some of How-To Geek’s Linux articles, and pipes are used in all of them, one way or another.

    管道是Linux和类似Unix的操作系统具有的最有用的命令行功能之一。 管道以无数方式使用。 查看任何Linux命令行文章-在任何网站上,而不仅仅是我们的网站上-您都会看到管道经常出现。 我回顾了How-To GeekLinux文章,并在管道中以一种或另一种方式使用管道。

    Linux pipes allow you to perform actions that are not supported out-of-the-box by the shell. But because the Linux design philosophy is to have many small utilities that perform their dedicated function very well, and without needless functionality—the “do one thing and do it well” mantra—you can plumb strings of commands together with pipes so that the output of one command becomes the input of another. Each command you pipe in brings its unique talent to the team, and soon you find you’ve assembled a winning squad.

    Linux管道允许您执行shell不支持的现成操作。 但是,由于Linux的设计理念是要有许多小型实用程序,它们可以很好地执行其专用功能,并且没有不必要的功能(“做一件事,就做得很好”的口头禅),因此您可以将命令字符串与管道一起垂直以使输出一个命令的输入成为另一命令的输入。 您输入的每个命令都会为团队带来独特的才能,很快您就会发现自己已经组建了一支制胜之队。

    一个简单的例子 (A Simple Example)

    Suppose we have a directory full of many different types of file. We want to know how many files of a certain type are in that directory. There are other ways to do this, but the object of this exercise is to introduce pipes, so we’re going to do it with pipes.

    假设我们有一个目录,其中包含许多不同类型的文件。 我们想知道该目录中有多少种特定类型的文件。 还有其他方法可以执行此操作,但是本练习的目的是引入管道,因此我们将使用管道进行此操作。

    We can get a listing of the files easily using ls:

    我们可以使用ls轻松获得文件列表:

    ls
    
    Collection if files in a directory, in a terminal window

    To separate out the file type of interest, we’ll use grep. We want to find files that have the word “page” in their filename or file extension.

    为了分离出感兴趣的文件类型,我们将使用grep 。 我们要查找文件名或文件扩展名中带有“页面”字样的文件。

    We will use the shell special character “|” to pipe the output from ls into grep.

    我们将使用外壳特殊字符“ | ”将ls的输出通过管道传递到grep

    ls | grep "page"
    
    ls -l | grep "page" in a terminal window

    grep prints lines that match its search pattern. So this gives us a listing containing only “.page” files.

    grep打印出与其搜索模式匹配的行。 因此,这为我们提供了仅包含“ .page”文件的列表。

    listing of page files in a terminal window

    Even this trivial example displays the functionality of pipes. The output from ls was not sent to the terminal window. It was sent to grep as data for the grep command to work with. The output we see comes from grep, which is the last command in this chain.

    即使这个简单的示例也显示了管道的功能。 ls的输出未发送到终端窗口。 它已作为grep命令使用的数据发送到grep 。 我们看到的输出来自grep,这是该链中的最后一条命令。

    延伸我们的链条 (Extending Our Chain)

    Let’s start extending our chain of piped commands. We can count the “.page” files by adding the wc command. We will use the -l (line count) option with wc. Note we’ve also added the -l (long format) option to ls . We’ll be using this shortly.

    让我们开始扩展管道命令链。 我们可以通过添加wc命令来计算“ .page”文件。 我们将在wc使用-l (行数)选项。 注意,我们还向ls添加了-l (长格式)选项。 我们将很快使用它。

    ls - | grep "page" | wc -l
    
    ls - | grep "page" | wc -l in a terminal window

    grep is no longer the last command in the chain, so we don’t see its output. The output from grep is fed into the wc command. The output we see in the terminal window is from wc. wc reports that there are 69 “.page” files in the directory.

    grep不再是链中的最后一个命令,因此我们看不到它的输出。 grep的输出被送入wc命令。 我们在终端窗口中看到的输出来自wcwc报告目录中有69个“ .page”文件。

    Let’s extend things again. We’ll take the wc command off the command line and replace it with awk. There are nine columns in the output from ls with the -l (long format) option. We’ll use awk to print columns five, three, and nine. These are the size, owner, and name of the file.

    让我们再扩展一遍。 我们将从命令行中wc命令,并将其替换为awkls的输出中有-l (长格式)选项的九列。 我们将使用awk打印第五,第三和九。 这些是文件的大小,所有者和名称。

    ls -l | grep "page" | awk '{print $5 " " $3 " " $9}'
    
    ls -l | grep "page" | awk '{print $5 " " $3 " " $9}' in a terminal window

    We get a listing of those columns, for each of the matching files.

    我们为每个匹配文件获得了这些列的列表。

    Three column listing for each matching file in a terminal window

    We’ll now pass that output through the sort command. We’ll use the -n (numeric) option to let sort know the first column should be treated as numbers.

    现在,我们将通过sort命令传递输出。 我们将使用-n (数字)选项让sort知道第一列应被视为number

    ls -l | grep "page" | awk '{print $5 " " $3 " " $9}' | sort -n
    
    ls -l | grep "page" | awk '{print $5 " " $3 " " $9}' | sort -n in a terminal window

    The output is now sorted in file size order, with our customized selection of three columns.

    现在,输出已按文件大小顺序排序,并具有我们自定义的三列选择。

    Files sorted by size in a terminal window

    添加另一个命令 (Adding Another Command)

    We’ll finish off by adding in the tail command. We’ll tell it to list the last five lines of output only.

    我们将通过添加tail命令结束。 我们将告诉它仅列出输出最后五行

    ls -l | grep "page" | awk '{print $5 " " $3 " " $9}' | sort -n | tail -5
    
    ls -l | grep "page" | awk '{print $5 " " $3 " " $9}' | sort -n | tail -5 in a terminal window

    This means our command translates to something like “show me the five largest “.page” files in this directory, ordered by size.” Of course, there is no command to accomplish that, but by using pipes, we’ve created our own. We could add this—or any other long command—as an alias or shell function to save all the typing.

    这意味着我们的命令将转换为“按大小显示此目录中五个最大的“ .page”文件”。 当然,没有命令可以完成此任务,但是通过使用管道,我们创建了自己的管道。 我们可以添加此命令(或任何其他长命令)作为别名或shell函数,以保存所有键入内容。

    Here is the output:

    这是输出:

    Five largest .page files listed by size order in a terminal window

    We could reverse the size order by adding the -r (reverse) option to the sort command, and using head instead of tail  to pick the lines from the top of the output.

    我们可以通过在sort命令中添加-r (reverse)选项来反转大小顺序,并使用head而不是tail从输出顶部选择行。

    
       
    ls -l | grep "page" | awk '{print $5 " " $3 " " $9}' | sort -rn | head -5 in a terminal window

    This time the five largest “.page” files are listed from largest to smallest:

    这次从最大到最小列出了五个最大的“ .page”文件:

    Five largest .page files listed in reverse size order in a terminal window

    最近的一些例子 (Some Recent Examples)

    Here are two interesting examples from recent How-To geek articles.

    这是最近的How-To怪胎文章中的两个有趣的示例。

    Some commands, such as the xargscommand, are designed to have input piped to them. Here’s a way we can have wc count the words, characters, and lines in multiple files, by piping ls into xargs which then feeds the list of filenames to wc as though they had been passed to wc as command line parameters.

    某些命令(例如xargs命令)旨在将输入通过管道传递给它们。 通过这种方式, wc可以通过将ls传递到xargs ,从而将多个文件中的单词,字符和行数统计到xargs ,然后xargs将文件名列表馈送到wc就像它们已经作为命令行参数传递给wc一样。

    ls *.page | xargs wc
    
    ls *.page | xargs wc in a terminal window

    The total numbers of words, characters, and lines are listed at the bottom of the terminal window.

    终端窗口底部列出了单词,字符和行的总数。

    Count of words, charcaters, and lines in a terminal window

    Here’s a way to get a sorted list of the unique file extensions in the current directory, with a count of each type.

    这是一种获取当前目录中唯一文件扩展名的排序列表的方法,每种类型都有一个计数。

    ls | rev | cut -d'.' -f1 | rev | sort | uniq -c
    
    ls | rev | cut -d'.' -f1 | rev | sort | uniq -c in a terminal window

    There’s a lot going on here.

    这里有很多事情。

    The output shows the list of file extensions, sorted alphabetically with a count of each unique type.

    输出显示文件扩展名列表,并按字母顺序对每种唯一类型的计数进行排序。

    List of unique file extensions in a terminal window

    命名管道 (Named Pipes)

    There’s another type of pipe available to us, called named pipes. The pipes in the previous examples are created on-the-fly by the shell when it processes the command line. The pipes are created, used, and then discarded. They are transient and leave no trace of themselves. They exist only for as long as the command using them is running.

    我们还有另一种类型的管道,称为命名管道。 前面示例中的管道是由Shell在处理命令行时即时创建的。 创建,使用并丢弃管道。 它们是短暂的,不会留下任何痕迹。 它们仅在使用它们的命令运行时存在。

    Named pipes appear as persistent objects in the filesystem, so you can see them using ls. They’re persistent because they will survive a reboot of the computer—although any unread data in them at that time will be discarded.

    命名管道在文件系统中显示为持久对象,因此您可以使用ls查看它们。 它们之所以具有持久性,是因为它们可以在计算机重新启动后幸存下来-尽管此时它们中的所有未读数据都将被丢弃。

    Named pipes were used a lot at one time to allow different processes to send and receive data, but I haven’t seen them used that way for a long time. No doubt there are people out there still using them to great effect, but I’ve not encountered any recently. But for completeness’ sake, or just to satisfy your curiosity, here’s how you can use them.

    一次使用了很多命名管道,以允许不同的进程发送和接收数据,但是很长一段时间以来我都没有看到它们使用这种方式。 毫无疑问,仍然有人在使用它们来产生巨大的效果,但是我最近还没有遇到过。 但是为了完整起见,或者只是为了满足您的好奇心,下面介绍了如何使用它们。

    Named pipes are created with the mkfifo command. This command will create a named pipe called “geek-pipe” in the current directory.

    命名管道是使用mkfifo命令创建的。 此命令在当前目录中创建一个名为“ geek-pipe”的命名管道

    mkfifo geek-pipe
    
    mkfifo geek-pipe in a terminal window

    We can see the details of the named pipe if we use the ls command with the -l (long format) option:

    如果将ls命令与-l (长格式)选项一起使用,则可以看到命名管道的详细信息:

    ls -l geek-pipe
    
    ls -l geek-pipe in a terminal window

    The first character of the listing is a “p”, meaning it is a pipe. If it was a “d”, it would mean the file system object is a directory, and a dash “-” would mean it is a regular file.

    列表的第一个字符是“ p”,表示它是一个管道。 如果它是“ d”,则表示文件系统对象是目录,而破折号“-”则表示它是常规文件。

    使用命名管道 (Using the Named Pipe)

    Let’s use our pipe. The unnamed pipes we used in our previous examples passed the data immediately from the sending command to the receiving command. Data sent through a named pipe will stay in the pipe until it is read. The data is actually held in memory, so the size of the named pipe will not vary in ls listings whether there is data in it or not.

    让我们使用我们的管道。 我们在前面的示例中使用的未命名管道将数据立即从发送命令传递到接收命令。 通过命名管道发送的数据将保留在管道中,直到被读取。 数据实际上保存在内存中,因此无论管道中是否有数据,命名管道的大小在ls列表中都不会改变。

    We’re going to use two terminal windows for this example. I’ll use the label:

    在此示例中,我们将使用两个终端窗口。 我将使用标签:

    # Terminal-1
    

    in one terminal window and

    在一个终端窗口中

    # Terminal-2
    

    in the other, so you can differentiate between them. The hash “#” tells the shell that what follows is a comment, and to ignore it.

    另外,您可以区分它们。 井号“#”告诉外壳程序其后是注释,并忽略它。

    Let’s take the entirety of our previous example and redirect that into the named pipe. So we’re using both unnamed and named pipes in one command:

    让我们来看完整前面的示例,然后将其重定向到命名管道中。 因此,我们在一个命令中同时使用了未命名管道和已命名管道:

    ls | rev | cut -d'.' -f1 | rev | sort | uniq -c > geek-pipe
    
    ls | rev | cut -d'.' -f1 | rev | sort | uniq -c > geek-pipe in a terminal window

    Nothing much will appear to happen. You may notice that you don’t get returned to the command prompt though, so something is going on.

    似乎什么都不会发生。 您可能会注意到,虽然您没有返回到命令提示符,所以正在发生某些事情。

    In the other terminal window, issue this command:

    在另一个终端窗口中,发出以下命令:

    cat < geek-pipe
    
    cat < geek-pipe in a terminal window

    We’re redirecting the contents of the named pipe into cat, so that cat will display that content in the second terminal window. Here’s the output:

    我们将命名管道的内容重定向到cat ,以便cat将在第二个终端窗口中显示该内容。 这是输出:

    The contents of the named piped shown in a terminal window

    And you’ll see that you have been returned to the command prompt in the first terminal window.

    并且您会看到您已经回到第一个终端窗口中的命令提示符。

    Completed task and the command prompt in in a terminal window

    So, what just happened.

    因此,发生了什么事。

    • We redirected some output into the named pipe.

      我们将一些输出重定向到命名管道。
    • The first terminal window did not return to the command prompt.

      第一个终端窗口没有返回到命令提示符。
    • The data remained in the pipe until it was read from the pipe in the second terminal.

      数据保留在管道中,直到从第二个终端的管道中读取数据为止。
    • We were returned to the command prompt in the first terminal window.

      我们回到了第一个终端窗口中的命令提示符。

    You may be thinking that you could run the command in the first terminal window as a background task by adding an & to the end of the command. And you’d be right. In that case, we would have been returned to the command prompt immediately.

    您可能会认为可以通过在命令的末尾添加&来将第一个终端窗口中的命令作为后台任务运行。 而且你会是对的。 在这种情况下,我们将立即返回到命令提示符。

    The point of not using background processing was to highlight that a named pipe is a blocking process. Putting something into a named pipe only opens one end of the pipe. The other end isn’t opened until the reading program extracts the data. The kernel suspends the process in the first terminal window until the data is read from the other end of the pipe.

    使用后台处理的目的是要突出显示命名管道是一个阻塞过程。 将东西放到命名管道中只会打开管道的一端。 直到读取程序提取数据后,另一端才打开。 内核在第一个终端窗口中挂起该进程,直到从管道的另一端读取数据为止。

    管道的力量 (The Power of Pipes)

    Nowadays, named pipes are something of a novelty act.

    如今,命名管道已成为一种新颖的行为。

    Plain old Linux pipes, on the other hand, are one of the most useful tools you can have in your terminal window toolkit. The Linux command line starts to come alive for you, and you get a whole new power-up when you can orchestrate a collection of commands to produce one cohesive performance.

    另一方面,普通的老式Linux管道是您可以在终端窗口工具箱中拥有的最有用的工具之一。 Linux命令行开始为您启用,并且当您可以组织一组命令以产生一种内聚的性能时,您将获得全新的启动。

    Parting hint: It is best to write your piped commands by adding one command at a time and getting that portion to work, then piping in the next command.

    分步提示:最好编写一次管道命令,方法是一次添加一个命令并使该部分起作用,然后通过管道传递下一个命令。

    翻译自: https://www.howtogeek.com/438882/how-to-use-pipes-on-linux/

    linux管道使用

    展开全文
  • Linux管道

    2018-06-01 21:46:08
    Linux中,管道是一个比较重要的概念,进程间通信的一种方法,管道分为两种,一种是匿名管道,一种是命名管道。 匿名管道 匿名管道的本质是内核中提供的的一段内存。 匿名管道的的特性: 用于有亲缘关系的...

    在Linux中,管道是一个比较重要的概念,进程间通信的一种方法,管道分为两种,一种是匿名管道,一种是命名管道。

    匿名管道

    匿名管道的本质是内核中提供的的一段内存。

    匿名管道的的特性:

    • 用于有亲缘关系的进程
    • 半双工,单项通信,双向通信需要两个管道
    • 声明周期随进程
    • 有内置的同步互斥机制
    • 面向字节流

    匿名管道的创建非常简单,首先需要定义一个存放两个整形变量的数组:int df[2],用来作为管道的输入端口和输出端口,使用pipe()函数可以创建一个匿名管道,fd作为参数传给pipe,df[0]对应着管道的读端,df[1]对应着管道的写端。
    这里写图片描述

    匿名管道的读写方式分为阻塞式和阻塞式。

    阻塞式:对空管道进行读,阻塞在read中,对满了的管道写,阻塞在write中

    非阻塞式:如果关闭所有的写端,对管道再尝试读,read返回0,表示读到了EOF,如果关闭所有的读端,对管道再尝试写,进程会收到SIGPIPE信号

    命名管道

    命名管道的本质也是内核提供的一段内存,通过一个特殊的文件来标识一个命名管道。

    命名管道的创建通过调用mkfifo指令或者mkfifo函数实现

    命名管道的特性除了可以使用在任意进程间外,其余的4条和匿名管道相同

    展开全文
  • Linux 管道

    2016-09-27 18:58:06
    Linux下实现简单的管道通信
  • Linux管道和重定向

    2021-01-09 14:24:01
     但是在测试的时候,如果左边的程序无限循环且不等待的输出,那么左边的程序执行时右边的程序也会执行,个人感觉这是linux的机制,因为缓冲区溢出了所以不得不启动右边的程序来使缓冲区空出来。  管道和重定向的...
  • linux管道举例理解

    千次阅读 多人点赞 2020-05-07 11:56:34
    linux管道举例理解一、管道的定义:“|”二、查找2.1统计当前目录下有多少个文件2.2查看当前目录下的前n(3)个文件2.3查看wang.txt文件包含i的字符行2.4查看内存使用情况2.5查询进程三、更改 一、管道的定义:“|”...

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
    欢迎关注微信公众号:宝藏女孩的成长日记
    让这个可爱的宝藏女孩在努力的道路上与你一起同行!
    如有转载,请注明出处(如不注明,盗者必究)

    一、管道的定义:“|”

    一般我们在进行操作的时候,命令很多,但我们只想要其中一部分,那么就可以使用管道了。
    管道是Linux中很重要的一种通信方式,是把一个前一个结果的输出直接连接到另一个的输入,通常和grep合作使用。

    二、查找

    举例说明

    2.1统计当前目录下有多少个文件

    ls | wc -l
    

    运行结果:
    在这里插入图片描述

    2.2查看当前目录下的前n(3)个文件

    ls -l | head -3
    

    运行结果:
    在这里插入图片描述

    2.3查看wang.txt文件包含i的字符行

    cat wang.txt | grep i
    

    运行结果:
    在这里插入图片描述

    2.4查看内存使用情况

    free -m
    

    运行结果:
    在这里插入图片描述
    将Swap这一行读取出来

    free -m|grep -i Swap
    

    运行结果:
    在这里插入图片描述
    使用awk进行精准查找

    free -m|grep -i Swap|awk '{print $1,$2,$3}
    

    运行结果:
    在这里插入图片描述

    2.5查询进程

    我们在显示所有进程和其状态的时候,会出现太多的进程,例如

    ps aux
    

    运行结果:

    在这里插入图片描述
    但如果我们要精确查找gdm的时候
    就需要运用管道:

    ps aux | grep gdm
    

    运行结果:
    在这里插入图片描述

    三、更改

    往一个文件里面添加字符

    echo "hahhahahhahahhahahahhahaha" | cat > wang.txt
    

    运行结果:
    在这里插入图片描述
    希望这些小例子可以帮助你对管道的理解!
    在这里插入图片描述

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
    欢迎关注微信公众号:宝藏女孩的成长日记
    让这个可爱的宝藏女孩在努力的道路上与你一起同行!
    如有转载,请注明出处(如不注明,盗者必究)

    展开全文
  • 介绍linux下的grep关键查询的命令用法
  • Linux管道命令及管道相关命令(详细)

    千次阅读 多人点赞 2019-10-15 19:51:59
    什么是管道命令2.第一个管道命令3. cut3.1 cut能干什么?3.2 实现3.2.1 截取出1.txt文件中前2行的第5个字符3.2.2 截取出1.txt文件中前2行以”:”进行分割的第1,2段内容4.sort 排序4.1 sort可以干嘛?4.2 举个例子...

    1. 什么是管道命令

    命令A|命令B --> 命令A的输出当做命令B的输入

    管道是一种通信机制,通常用于进程间的通信(也可通过socket进行网络通信),它表现出来的形式将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。

    • 管道命令使用|作为界定符号,管道命令与上面说的连续执行命令不一样。

    2.第一个管道命令

    $ ls -al /etc | less
    

    通过管道将ls -al的输出作为 下一个命令less的输入,方便浏览。
    在这里插入图片描述

    3. cut

    3.1 cut能干什么?

    • cut 可以根据条件 从命令结果中提取对应内容
    • Linux cut命令用于显示每行从开头算起 num1 到 num2 的文字。
    • cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

    如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

    3.2 实现

    3.2.1 截取出1.txt文件中前2行的第5个字符

    命令含义
    cut 动作 文件从指定文件 截取内容
    • 参数
    参数英文含义
    -ccharacters按字符选取内容
    head -2 1.txt | cut -c 5
    从1.txt文件中截取前两行 | 通过管道符将前一个的输入 转换到后面的输出 cut命令 -c参数按照字符选取内容 选取第五个
    

    3.2.2 截取出1.txt文件中前2行以”:”进行分割的第1,2段内容

    参数英文含义
    -d '分隔符'delimiter指定分隔符
    -f n1,n2fields分割以后显示第几段内容, 使用 , 分割

    范围控制

    范围含义
    n只显示第n项
    n-显示 从第n项 一直到行尾
    n-m显示 从第n项 到 第m项(包括m)
    head -2 1.txt | cut -d ':' -f 1,2
    
    head -2 1.txt | cut -d ':' -f 1-2
    
    • 通过 cut 动作 目标文件 可以根据条件 提取对应内容

    4.sort 排序

    4.1 sort可以干嘛?

    • sort可针对文本文件的内容,以行为单位来排序。

    4.2 举个例子

    4.2.1第一步: 对字符串排序

    [root@node01 tmp]# cat 2.txt
    	banana
    	apple
    	pear
    	orange
    	pear
    
    [root@node01 tmp]# sort 2.txt 
    	apple
    	banana
    	orange
    	pear
    	pear
    

    4.2.2第二步: 去重排序

    参数英文含义
    -uunique去掉重复的

    它的作用很简单,就是在输出行中去除重复行。

    [root@node01 tmp]# sort -u 2.txt 
    	apple
    	banana
    	orange
    	pear
    

    4.2.3 第三步: 对数值排序

    参数英文含义
    -nnumeric-sort按照数值大小排序
    -rreverse使次序颠倒
    • 准备数据

      [root@node01 tmp]# cat 3.txt 
      1
      3
      5
      7
      11
      2
      4
      6
      10
      8
      9
      
    • 默认按照字符串排序

      [root@node01 tmp]# sort 2.txt 
      1
      10
      11
      2
      3
      4
      5
      6
      7
      8
      9
      
    • 升序

      [root@node01 tmp]# sort -n 2.txt
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      
    • 倒序

      [root@node01 tmp]# sort -n -r 2.txt
      11
      10
      9
      8
      7
      6
      5
      4
      3
      2
      1
      
    • 合并式

      [root@node01 tmp]# sort -nr 2.txt  
      11
      10
      9
      8
      7
      6
      5
      4
      3
      2
      1
      

      第四步 : 对成绩排序

    参数英文含义
    -tfield-separator指定字段分隔符
    -kkey根据那一列排序
    # 根据第二段成绩 进行倒序显示 所有内容
    sort -t ',' -k2nr score.txt 
    

    5.wc 命令

    5.1 wc命令能干什么?

    • 显示指定文件 字节数, 单词数, 行数 信息.

    5.2举个例子

    5.2.1第一步: 显示指定文件 字节数, 单词数, 行数 信息.

    命令含义
    wc 文件名显示指定文件 字节数, 单词数, 行数 信息
    [root@hadoop01 export]# cat 4.txt
    111
    222 bbb
    333 aaa bbb 
    444 aaa bbb ccc
    555 aaa bbb ccc ddd
    666 aaa bbb ccc ddd eee
    
    [root@hadoop01 export]# wc 4.txt 
     6 21 85 4.txt
    

    5.2.2 第二步: 只显示 文件 的行数

    参数英文含义
    -cbytes字节数
    -wwords单词数
    -llines行数
    [root@hadoop01 export]# wc 4.txt 
     6 21 85 3.txt
    

    5.2.3 第三步: 统计多个文件的 行数 单词数 字节数

    [root@hadoop01 export]# wc 1.txt 2.txt 3.txt 
      4   4  52 1.txt
     11  11  24 2.txt
      6  21  85 3.txt
     21  36 161 总用量
     
    [root@hadoop01 export]# wc *.txt
      4   4  52 1.txt
     11  11  24 2.txt
      6  21  85 3.txt
      6   6  95 score.txt
     27  42 256 总用量
    

    5.2.4 第四步: 查看 /etc 目录下 有多少个 子内容

    [root@hadoop01 export]# ls /etc | wc -w
    240
    

    5.3 小结

    • 通过 wc 文件 就可以 统计 文件的 字节数、单词数、行数.

    6.uniq 去重

    6.1 uniq 可以干什么

    • uniq 命令用于检查及删除文本文件中重复出现的行,一般与 sort 命令结合使用。
    • uniq 命令用于检查及删除文本文件中重复出现的行,一般与 sort 命令结合使用。

    6.2 举个例子

    6.2.1 实现去重效果

    命令英文含义
    uniq [参数] 文件unique 唯一去除重复行
    # 准备内容
    [root@hadoop01 export]# cat 5.txt 
    张三    98
    李四    100
    王五    90
    赵六    95
    麻七    70
    李四    100
    王五    90
    赵六    95
    麻七    70
    
    # 排序
    [root@hadoop01 export]# cat 5.txt | sort
    李四    100
    李四    100
    麻七    70
    麻七    70
    王五    90
    王五    90
    张三    98
    赵六    95
    赵六    95
    
    # 去重
    [root@hadoop01 export]# cat 5.txt | sort | uniq
    李四    100
    麻七    70
    王五    90
    张三    98
    赵六    95
    
    

    6.2.2 不但去重,还要 统计出现的次数

    参数英文含义
    -ccount统计每行内容出现的次数
    [root@hadoop01 export]# cat 5.txt | sort | uniq -c
          2 李四    100
          2 麻七    70
          2 王五    90
          1 张三    98
          2 赵六    95
    

    6.3 小结

    • 通过 uniq [选项] 文件 就可以完成 去重行 和 统计次数

    7.tee命令

    7.1 tee 是什么?

    • 通过 tee 可以将命令结果 通过管道 输出到 多个文件

    7.2 举个例子

    命令含义
    命令结果 | tee 文件1 文件2 文件3通过 tee 可以将命令结果 通过管道 输出到 多个文件

    7.2.1 将去重统计的结果 放到 a.txt、b.txt、c.txt 文件中

    cat 5.txt | sort | uniq -c | tee a.txt b.txt c.txt
    

    7.3 小结

    • 通过 tee 可以将命令结果 通过管道 输出到 多个文件

    8.tr 命令(这可不是html的表格行哦)

    8.1 是什么?

    • 通过 tr 命令用于 替换删除 文件中的字符。

    8.2 举个例子

    8.2.1 第一步: 实现 替换效果

    命令英文含义
    命令结果 | tr 被替换的字符 新字符translate实现 替换效果
    # 将 小写i 替换成  大写 I
    echo "itheima" | tr 'i' 'I'
    
    # 把itheima的转换为大写
    echo "itheima" |tr '[a-z]' '[A-Z]'
    
    # 把 HELLO 转成 小写
    echo "HELLO" |tr '[A-Z]' '[a-z]'
    

    8.2.2 第二步: 实现删除效果

    命令英文含义
    命令结果 | tr -d 被删除的字符delete删除指定的字符
    • 需求: 删除abc1d4e5f中的数字
    echo 'abc1d4e5f' | tr -d '[0-9]'
    

    8.2.3 第三步: 单词计数

    准备工作
    [root@hadoop01 export]# cat words.txt 
    hello,world,hadoop
    hive,sqoop,flume,hello
    kitty,tom,jerry,world
    hadoop
    

    1 将, 换成 换行

    2 排序

    3 去重

    4 计数

    # 统计每个单词出现的次数
    [root@hadoop01 export]# cat words.txt | tr ',' '\n' | sort | uniq -c
          1 flume
          2 hadoop
          2 hello
          1 hive
          1 jerry
          1 kitty
          1 sqoop
          1 tom
          2 world
    
    • 准备工作

      # 查看 /etc目录下 以.conf以结尾的文件的内容
      cat -n /etc/*.conf
      
      # 将命令结果 追加到 /export/v.txt 文件中
      cat -n /etc/*.conf >> /export/v.txt
      

    9.split 命令

    9.1 是什么?

    • 通过 split 命令将大文件 切分成 若干小文件

    9.2 举个例子

    9.2.1第一步: 按 字节 将 大文件 切分成 若干小文件

    命令英文含义
    split -b 10k 文件byte将大文件切分成若干10KB的小文件

    9.2.2 第二步: 按 行数 将 大文件 切分成 若干小文件

    命令英文含义
    split -l 1000 文件lines将大文件切分成若干1000行 的小文件

    9.3 小结

    • 通过 split 选项 文件名 命令将大文件 切分成 若干小文件

    • 准备工作1:

      vim score.txt

      zhangsan 68 99 26
      lisi 98 66 96
      wangwu 38 33 86
      zhaoliu 78 44 36
      maq 88 22 66
      zhouba 98 44 46
      
    展开全文
  • Linux管道用法示例

    2020-02-15 11:42:31
  • Linux管道符|命令使用详解

    千次阅读 2021-01-21 13:25:38
    “|”是Linux管道命令操作符,简称管道符。使用此管道符“|”可以将两个命令分隔开,“|”左边命令的输出就会作为“|”右边命令的输入,此命令可连续使用,第一个命令的输出会作为第二个命令的输入,第二个命令的...
  • Linux 管道的用法

    千次阅读 2019-06-04 23:59:52
    Linux管道用于进程间的通信,进程通过PIPE函数,在内核中创建管道,而管道是一个单向队列。 PIPE函数注意: 1. 管道是创建在内存中的,进程结束,空间释放,管道就不存在了 2. 管道中的动心,读完了就删除了,...
  • 最后是Ultimate Plumber ,这是一个用于在基于终端的UI中交互编写Linux管道的工具,可以实时实时预览命令结果。 Ultimate Plumber的主要目标是借助快速的反馈循环,通过更轻松地快速构建复杂的管道来帮助交互式和...
  • LINUX 管道通信 实验报告(完整版)
  • Linux管道实现机制

    2012-12-16 23:17:24
    Linux下的管道机制,实现进程间的通信,介绍了命名管道和匿名管道
  • Linux管道容量

    千次阅读 2017-03-03 13:54:44
    根据手册,linux上的PIPE容量为(capacity)65536个字节;实验得到ubuntu的PIPE_BUF为4096。这里要特别说明的是我看到网上有人将这个Capacity和PIPE_BUF混淆了,当 管道的写端存在时,如果请求的字节数
  • 漫画:什么是Linux管道

    千次阅读 2020-04-16 08:50:00
    后记:这篇小短文主要说了一下Linux管道的工作原理,管道是Linux中很重要的一种通信方式,它可以把一个程序的输出直接连接到另一个程序的输入,我们日常使用的管道多是指无名管道,无名管道...
  • linux管道专题编程笔记
  • 进程间通信之Linux管道编程

    千次阅读 2018-11-10 19:53:03
    管道(pipe)是Unix/Linux中最常见的进程间通信方式之一,它在两个进程之间实现一个数据流通的通道,数据以一种数据流的方式在进程间流动。在系统中,管道相当于文件系统上的一个文件,用于缓存所要传输的数据。在...
  • linux管道pipe详解

    万次阅读 多人点赞 2018-08-24 17:58:04
    管道 管道的概念: 管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递。调用pipe系统函数即可创建一个管道。有如下特质: 1. 其本质是一个伪文件(实为内核缓冲区) 2. 由两个文件描述符引用...
  • linux 管道符操作

    2018-07-10 23:37:36
    管道符操作如:grep "^root" /etc/passwd#输出结果 root:x:0:0:root:/root:/bin/bashgrep "^root" /etc/passwd | awk -F: '{print $1,$7}'#输出结果 root /bin/bash其中,awk用于截取输出内容,...
  • linux管道命令的简单操作

    万次阅读 2018-07-25 21:48:55
    版权声明:本文为 小异常 原创文章,非... Linux中的 管道命令 对于初学者来说可能比较难理解吧,今天我就对 管道命令 做一个简单的总结吧。  当我们第一次接触 管道命令 时,可能都会有这样的一个疑问,这个命令...
  • linux 管道

    2011-09-27 15:30:17
    这个是linux 多进程多线程通信的模板,多进程间命名管道实现前台进程控制后台守护进程,线程间使用互斥锁机制
  • up-Ultimate Plumber up是Ultimate Plumber,这是一个用于在基于终端的UI中交互编写Linux管道的工具,可实时实时预览命令结果。 Ultimate Plumber的主要目标是帮助进行交互-Ultimate Plumber up是Ultimate Plumber,...
  • linux 管道、cut、grep、sort详细用法

    千次阅读 2018-10-07 17:09:54
    linux 管道、cut、grep、sort用法linux 管道、cut、grep、sort用法顺序执行命令管道cut打印每一行的某一字段grep 命令,在文本中或 stdin 中查找匹配字符串sort 排序命令 linux 管道、cut、grep、sort用法 顺序执行...
  • 管道容量:我们通过ulimit -a命令查看到的pipo size定义的是内核管道缓冲区的大小,这个值的大小是由内核设定的;而pipe capacity指的是管道的最大值,即容量,是内核内存中的一个缓冲区。 1.首先我们通过命令来...
  • Linux管道命令grep 和 wc

    千次阅读 2019-09-08 08:15:43
    cat test1.sh test.sh 2>/dev/null | grep -n 'good' 1:echo very good 2:echo good 5:echo good #将test1.sh 没有找到错误输出重定向输出给/dev/null 文件,正确输出通过管道发送给grep >是重定向 |是管道重定向 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 186,501
精华内容 74,600
关键字:

linux管道

linux 订阅