标签: replace

如何使用当前的粘贴缓冲区在 Vim 中执行“更改单词”?

我的粘贴缓冲区中有一些文本,例如我做了一个yw(猛拉单词),现在我的缓冲区中有 'foo'。

我现在转到“bar”这个词,我想用我的粘贴缓冲区替换它。

要手动替换文本,我可以这样做cw,然后输入新单词。

如何进行“更改单词”,但使用粘贴缓冲区的内容而不是手动输入替换单词?

我现在最好的选择是到要替换的单词的开头并执行dw(删除单词),然后转到另一个位置,然后执行yw(猛拉单词)。然后回到替换区域并做p(粘贴)这有点笨拙,特别是如果它们不在同一个屏幕上。

vim vi buffer replace

134
推荐指数
5
解决办法
7万
查看次数

删除包含特定字符串的行和以下行

我用这个

cat foo.txt | sed '/bar/d'

删除bar文件中包含字符串的行。

然而,我想删除这些行和它之后的行。最好的sedawk或者其他工具,在MINGW32的可用。

这是我可以grep使用-A-B打印匹配行以及匹配行之前/之后的行的一种相反。

有什么简单的方法可以实现吗?

sed awk text-processing replace

93
推荐指数
4
解决办法
23万
查看次数

使用 VIM 替换,重用部分搜索模式

我正在使用VIm并尝试设置一个搜索和替换命令来进行一些替换,我可以在其中重新使用作为我的搜索字符串一部分的正则表达式。

一个简单的例子是一条线,我想更换(10){10},其中10可以是任何数字。

我来了这么远

  .s/([0-9]*)/what here??/
Run Code Online (Sandbox Code Playgroud)

这与我想要的部分完全匹配。

现在更换,我试过了

  .s/([0-9]*)/{\0}/
Run Code Online (Sandbox Code Playgroud)

但是,这作为输出 {(10)}

然后,我试过了

 .s/(\zs[0-9]*\ze)/{\0}/
Run Code Online (Sandbox Code Playgroud)

然而,这给了我({10}),我也关闭了,但不是我想要的。

我想我需要一些其他类型的标记/反向引用而不是 this \0,但我不知道在哪里看。所以问题是,这可以在 vim 中完成吗,如果可以,怎么做?

vim vi regular-expression replace

52
推荐指数
1
解决办法
7万
查看次数

如何用awk替换特定列的内容?

鉴于:记录中有 40 列。我想替换第 35 列,以便将第 35 列替换为第 35 列的内容和“$”符号。想到的是这样的:

awk '{print $1" "$2" "...$35"$ "$36...$40}'
Run Code Online (Sandbox Code Playgroud)

它可以工作,但是因为当列数大到 10k 时它是不可行的。我需要一个更好的方法来做到这一点。

linux awk text-processing replace

45
推荐指数
3
解决办法
15万
查看次数

将 sed 与符号 (&) 一起使用

我正在使用 sed 来查找和替换我拥有的 SAS 文件中的模式,而不是单独更改它们。问题是我试图替换宏变量,当我使用&符号时,它没有正确处理。

Here's my code:
sed -ie 's/user=&uid./user=&sysuserid./g' *_table_*.sas
Run Code Online (Sandbox Code Playgroud)

每当我运行此命令时,它似乎都会附加并使用原始文本执行各种时髦的操作。

问题:如何使用 sed 命令替换包含与号的文本?

sed quoting replace

35
推荐指数
1
解决办法
3万
查看次数

如何“cat”一个文件并删除注释行?

我想知道是否有一种方法可以cat归档php.ini并删除所有以开头的行;

例如,如果文件包含以下内容:

;   - Show all errors, except for notices
;
;error_reporting = E_ALL & ~E_NOTICE
;
;   - Show only errors
;
;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
;
;   - Show all errors except for notices
;
error_reporting  =  E_ALL & ~E_NOTICE
Run Code Online (Sandbox Code Playgroud)

我运行了正确的命令cat | {remove comments command},然后我会得到:

error_reporting  =  E_ALL & ~E_NOTICE
Run Code Online (Sandbox Code Playgroud)

-我认为cat会做到这一点的最好办法,但实际上,我细使用其他实用程序一样的答案awksedegrep,等。

linux command-line grep replace cat

33
推荐指数
4
解决办法
6万
查看次数

在非常大的文件中快速替换文本

我有 25GB 的文本文件,只需要在几行中替换一个字符串。我可以sed成功使用,但需要很长时间才能运行。

sed -i 's|old text|new text|g' gigantic_file.sql
Run Code Online (Sandbox Code Playgroud)

有没有更快的方法来做到这一点?

sed large-files replace

32
推荐指数
2
解决办法
7万
查看次数

如何报告“sed”就地更改

当使用sed就地替换字符串时,有没有办法让它报告它所做的更改(不依赖于新旧文件的差异)?

例如,如何更改命令行

find . -type f | xargs sed -i 's/abc/def/g'
Run Code Online (Sandbox Code Playgroud)

这样我就可以看到即时所做的更改?

sed text-processing replace

28
推荐指数
4
解决办法
2万
查看次数

如何在Emacs中替换光标下的当前单词

如何在 Emacs 中替换光标下的当前单词?

我知道我可以使用 query-replace 或 replace-string 但每次我都必须输入要替换的整个字符串,这很烦人。

Vi 具有等效的命令 cword,我可以使用快捷方式将光标下的单词拉出以进行替换:

nmap <leader>z :%s#\<<C-r>=expand("<cword>")<CR>\>#
Run Code Online (Sandbox Code Playgroud)

有人知道如何用Emacs做到这一点吗?

emacs search replace

26
推荐指数
3
解决办法
1万
查看次数

使用 sed 将字符串替换为文件内容

我有两个不同的文件:

文件 1

/home/user1/  
/home/user2/bin  
/home/user1/a/b/c
Run Code Online (Sandbox Code Playgroud)

文件 2

<TEXT1>
<TEXT2>
Run Code Online (Sandbox Code Playgroud)

我想替换<TEXT1>文件2与内容文件1使用sed。我试过这个命令,但没有得到正确的输出:

cat File2|sed "s/<TEXT1>/$(cat File1|sed 's/\//\\\//g'|sed 's/$/\\n/g'|tr -d "\n")/g"
Run Code Online (Sandbox Code Playgroud)

您也可以使用其他工具来解决此问题。

sed replace

24
推荐指数
3
解决办法
3万
查看次数