带有 sed 输出的猫
cat with output of sed
我想删除文件 (file.a
) 中所有以 ##
开头的行,并将它们替换为另一个文件 (file.b
) 中的所有行。要从 file.a
中删除的行首先出现在该文件中(它们之前没有行)。
漫长的道路是:
sed -i '/##/d' file.a
cat file.b file.a > file.c
mv file.c file.a
有短途(排队)吗?
例如文件file.a
## line
## line
## line
linea1
linea2
linea3
和file.b
lineb1
lineb2
lineb3
应该这样做:
$ sed -e '1r file.b' -e'/^##/d' file.a
lineb1
lineb2
lineb3
linea1
linea2
linea3
r <i>filename</i>
命令在第1行插入一个文件,第二个命令删除所有以[=17=开头的行].它们必须在单独的 -e
表达式中,因为在文件名之后必须有一个换行符或一个命令的结尾,所以这也可以工作:
sed '1r file.b
/^##/d' file.a
就地修改file.a
,命令变为
sed -i -e '1r file.b' -e'/^##/d' file.a
注意命令的顺序很重要:删除命令 (d
) 开始一个新的循环,跳过它之后的任何命令,所以 r
有先走。 小提示:potong
我想删除文件 (file.a
) 中所有以 ##
开头的行,并将它们替换为另一个文件 (file.b
) 中的所有行。要从 file.a
中删除的行首先出现在该文件中(它们之前没有行)。
漫长的道路是:
sed -i '/##/d' file.a
cat file.b file.a > file.c
mv file.c file.a
有短途(排队)吗?
例如文件file.a
## line
## line
## line
linea1
linea2
linea3
和file.b
lineb1
lineb2
lineb3
应该这样做:
$ sed -e '1r file.b' -e'/^##/d' file.a
lineb1
lineb2
lineb3
linea1
linea2
linea3
r <i>filename</i>
命令在第1行插入一个文件,第二个命令删除所有以[=17=开头的行].它们必须在单独的 -e
表达式中,因为在文件名之后必须有一个换行符或一个命令的结尾,所以这也可以工作:
sed '1r file.b
/^##/d' file.a
就地修改file.a
,命令变为
sed -i -e '1r file.b' -e'/^##/d' file.a
注意命令的顺序很重要:删除命令 (d
) 开始一个新的循环,跳过它之后的任何命令,所以 r
有先走。 小提示:potong