我有一个文本文件,比如说text
.
我想要做的是将文本文件放入管道(如 中cat text |
),但在顶部和底部添加了行 - 但不创建新文件(因为text
文件有点大)或修改它。
那可能吗?我在想echo $(echo "line"; cat text; echo "line")
,但我不喜欢那样。
来自 man bash:
(list) list 在子shell 环境中执行(参见下面的命令执行环境)。影响 shell 环境的变量分配和内置命令在命令完成后不会保持有效。返回状态是列表的退出状态。
所以这应该工作:
(echo first line; cat file; echo last line) | some_command
正如chepner所建议的,当您不需要子外壳时,您可以{}
使用()
. 在这种情况下,;
必须包含组中的最后一个命令。
在评论中 Pyrolistical 记得如果你有一个传入的管道而不是一个文件,这也可以工作:
some_program | (echo first line; cat -; echo last line) | some-other-command
与许多 unix 命令行应用程序一样,如果文件名参数为cat
is -
,则表示“从标准输入读取”。
从这个问题复制在每个文本文件的顶部和底部添加新行:
cat text |sed -e '1 i beginning_line'| sed -e '$s@$@\nending_line@' |
它似乎工作。
在管道输出中添加行,在顶部添加一行:(来源 - @Karel Bilek 的评论)
cat text.txt | sed -e '1 i my first line'
在底部添加一行:(来源 - https://askubuntu.com/a/968585)
cat text.txt | sed -e '$a my last line'
例如:用单引号试试这个
cat text.txt | sed -e '1 i my first line' | sed -e '$a my last line'
输出:
my first line
this is
my
text
file
my last line