我可以在bash编程中使用vi命令(例如5DD)吗?

我可以在bash编程中使用vi命令(例如5DD)吗?,bash,Bash,又是我。我遇到了另一个问题 首先,我需要匹配某个模式,例如: dfsdf sdfd sdfs sdf vcv ssdff sdfdsf adssa 我需要匹配sdf,然后我需要删除以下固定编号的行(例如3DD) 我可以在bash编程中使用vi命令吗?或者有什么方法可以实现吗?再次感谢如果您想手动完成,请用 less -N x.txt 使用/sdf对字符串“sdf”进行grep。您将看到您的关键字高亮显示。继续按n键,进入字符串的下一个出现位置。当您想切换到vi;只需按v。要恢复到less,只

又是我。我遇到了另一个问题 首先,我需要匹配某个模式,例如:

dfsdf
sdfd
sdfs
sdf
vcv
ssdff
sdfdsf
adssa
我需要匹配sdf,然后我需要删除以下固定编号的行(例如3DD)
我可以在bash编程中使用vi命令吗?或者有什么方法可以实现吗?再次感谢

如果您想手动完成,请用

less -N x.txt

使用
/sdf
对字符串“sdf”进行grep。您将看到您的关键字高亮显示。继续按n键,进入字符串的下一个出现位置。当您想切换到
vi
;只需按
v
。要恢复到
less
,只需保存并退出(
ZZ
:wq
)。

Bash不是一个编辑器,它是一个shell。它支持用于命令行编辑的
vi
键,但实际上不支持编辑整个文件。(当然,您可以在bash中编写编辑器(使用
read
、循环、模式和
echo
),但bash并不是实现这一点的合适工具。)


若要以编程方式编辑文件,请再次尝试
sed

sed
来帮助您!要处理匹配后的行,请执行以下操作:

sed "/^sdf$/,+3 d" file
这将删除匹配行及其后面的三个。只需将3更改为要删除的任意行数。此外,请注意,输入中每次出现“sdf”都会发生这种情况

刚意识到我可能误解了这个问题。如果不想删除匹配行(本例中为“sdf”),可以执行以下操作:

sed "/^sdf$/,+3 {/^sdf$/b skip; d; :skip}" file

如果你的问题可以单独理解,而不希望听众记住你提出的另一个问题,那就更好了。如果您想匹配文件中的行、用户输入等,以及您所说的“删除”的确切含义,这个问题没有答案。谢谢。还有一个问题,我可以使用bash编程将文件复制到不同的文件夹中吗。例如:c:/folders/test如果我想复制文件夹中的内容,是否需要将bash程序放入文件夹文件中?这不是必需的,您可以使用绝对路径(例如:“c:/somewhere/over/the/rainbow”)而不是相对路径(“over/the/rainbow”,这意味着您当前的工作目录必须是c:/somewhere)打开哪个编辑器取决于环境变量
$VISUAL
$editor
。如果设置了nither,它将打开
vi