用管道中的文件名sed

phy*_*ker 6 ls sed pipe

在一个文件夹,我有一个文件名中的几个参数,例如(只是一个参数)许多文件file_a1.0.txt,file_a1.2.txt等等.
这些都是由C++代码生成,我需要把生成的最后一个(时间).我不知道先验代码终止时该参数的值是什么.之后我需要复制最后一个文件的第二行.

要复制任何文件的第二行,我知道此sed命令有效:

sed -n 2p filename
Run Code Online (Sandbox Code Playgroud)

我也知道如何找到最后生成的文件:

ls -rtl file_a*.txt | tail -1
Run Code Online (Sandbox Code Playgroud)

题:

如何结合这两个操作?当然可以将第二个操作传递给该sed操作,但我不知道如何将来自管道的文件名作为该sed命令的输入.

sat*_*sat 11

你可以用这个,

ls -rt1 file_a*.txt | tail -1 | xargs sed -n '2p'
Run Code Online (Sandbox Code Playgroud)

(要么)

sed -n '2p' `ls -rt1 file_a*.txt | tail -1`

sed -n '2p' $(ls -rt1 file_a*.txt | tail -1)
Run Code Online (Sandbox Code Playgroud)

  • @Reza,`-l` 会给你长列表输出。这就是为什么,我使用了 `ls -1 (one)` (2认同)