我的粘贴缓冲区中有一些文本,例如我做了一个yw(猛拉单词),现在我的缓冲区中有 'foo'。
我现在转到“bar”这个词,我想用我的粘贴缓冲区替换它。
要手动替换文本,我可以这样做cw,然后输入新单词。
如何进行“更改单词”,但使用粘贴缓冲区的内容而不是手动输入替换单词?
我现在最好的选择是到要替换的单词的开头并执行dw(删除单词),然后转到另一个位置,然后执行yw(猛拉单词)。然后回到替换区域并做p(粘贴)这有点笨拙,特别是如果它们不在同一个屏幕上。
我用这个
cat foo.txt | sed '/bar/d'
删除bar文件中包含字符串的行。
然而,我想删除这些行和它之后的行。最好的sed,awk或者其他工具,在MINGW32的可用。
这是我可以grep使用-A并-B打印匹配行以及匹配行之前/之后的行的一种相反。
有什么简单的方法可以实现吗?
我正在使用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 中完成吗,如果可以,怎么做?
鉴于:记录中有 40 列。我想替换第 35 列,以便将第 35 列替换为第 35 列的内容和“$”符号。想到的是这样的:
awk '{print $1" "$2" "...$35"$ "$36...$40}'
Run Code Online (Sandbox Code Playgroud)
它可以工作,但是因为当列数大到 10k 时它是不可行的。我需要一个更好的方法来做到这一点。
我正在使用 sed 来查找和替换我拥有的 SAS 文件中的模式,而不是单独更改它们。问题是我试图替换宏变量,当我使用&符号时,它没有正确处理。
Here's my code:
sed -ie 's/user=&uid./user=&sysuserid./g' *_table_*.sas
Run Code Online (Sandbox Code Playgroud)
每当我运行此命令时,它似乎都会附加并使用原始文本执行各种时髦的操作。
问题:如何使用 sed 命令替换包含与号的文本?
我想知道是否有一种方法可以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会做到这一点的最好办法,但实际上,我细使用其他实用程序一样的答案awk,sed,egrep,等。
我有 25GB 的文本文件,只需要在几行中替换一个字符串。我可以sed成功使用,但需要很长时间才能运行。
sed -i 's|old text|new text|g' gigantic_file.sql
Run Code Online (Sandbox Code Playgroud)
有没有更快的方法来做到这一点?
当使用sed就地替换字符串时,有没有办法让它报告它所做的更改(不依赖于新旧文件的差异)?
例如,如何更改命令行
find . -type f | xargs sed -i 's/abc/def/g'
Run Code Online (Sandbox Code Playgroud)
这样我就可以看到即时所做的更改?
如何在 Emacs 中替换光标下的当前单词?
我知道我可以使用 query-replace 或 replace-string 但每次我都必须输入要替换的整个字符串,这很烦人。
Vi 具有等效的命令 cword,我可以使用快捷方式将光标下的单词拉出以进行替换:
nmap <leader>z :%s#\<<C-r>=expand("<cword>")<CR>\>#
Run Code Online (Sandbox Code Playgroud)
有人知道如何用Emacs做到这一点吗?
我有两个不同的文件:
/home/user1/
/home/user2/bin
/home/user1/a/b/c
Run Code Online (Sandbox Code Playgroud)
<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)
您也可以使用其他工具来解决此问题。