ead*_*sjr 3 command-line pipe awk
如何将输入的每行输入加倍?
例子:
echo "foobar" | MYSTERY_COMMAND
foobar
foobar
只需使用sed p.
echo foobar | sed p
Run Code Online (Sandbox Code Playgroud)
你也不需要cat:
sed p input.txt
# or
sed p input.txt > output.txt
Run Code Online (Sandbox Code Playgroud)
解释
p是sed“打印”命令。
打印也是sed的默认行为。因此,当您sed明确告诉打印时,结果是每行打印两次。
假设您只想打印包含“金橘”一词的行。您可以使用-nsupresssed的默认打印操作,然后明确告诉它打印匹配的行/kumquat/:
sed -n /kumquat/p
Run Code Online (Sandbox Code Playgroud)
或者,如果您只想打印第 5 行而不打印其他任何内容:
sed -n 5p
Run Code Online (Sandbox Code Playgroud)
或者,如果要打印从第 15 行到第 27 行的每一行:
sed -n 15,17p
Run Code Online (Sandbox Code Playgroud)
如果您想打印除包含“kumquat”的行之外的每一行,您可以通过删除所有金桔行来完成此操作,并让sed打印行的默认操作发生在未删除的行上。您不需要-n标志或显式p命令:
sed /kumquat/d
Run Code Online (Sandbox Code Playgroud)
sed工作在一个简单的模式——动作语法上。在上面的示例中,我展示了基于行号的模式和基于正则表达式的模式,以及两个操作(打印和删除)。 sed有很多比这更多的功率。
我真的应该包括最常见和最有用的sed命令:
sed s/apples/oranges/g
Run Code Online (Sandbox Code Playgroud)
这将用“oranges”替换“apples”的每个实例并打印结果。
(如果您g在substitute 命令中省略了lobal 标志,则只会更改每行上的第一个实例。)
进一步阅读(强烈推荐):