标签: substitution

替换^和| 矩阵中的符号

我有下表:

column1  column2
1        aaa^bbb
2        aaa^bbb|ccc^ddd
Run Code Online (Sandbox Code Playgroud)

我想有一个输出文件如下:

column1   column2     column3
1         aaa         bbb
2         aaa         bbb
3         ccc         ddd
Run Code Online (Sandbox Code Playgroud)

如果有聪明的方法,你能不能让我知道吗?

更新:

我试图做两件事;

对于^,我想将上下文分为第2列和第3列.

对于|,我想将它分隔到下一行,但在column1中保持相同的数字(第1行和第3行的列1相同.抱歉,我在这里犯了一个错误.

要重写,输入如下:

column1  column2 
x        aaa^bbb 
y        aaa^bbb|ccc^ddd 
Run Code Online (Sandbox Code Playgroud)

输出如下:

column1   column2     column3 
x         aaa         bbb 
y         aaa         bbb 
y         ccc         ddd 
Run Code Online (Sandbox Code Playgroud)

r substitution

0
推荐指数
1
解决办法
1227
查看次数

从s/pattern/sub/g获取替换

我试图从替换函数中获取被替换(实际上,已删除)的内容.

例如:

my $line = q{hello "my" friend "how" are 'you'};
$line =~ s/("[^"]*"|'[^']*')//g; # Removing any balanced quotes

# I'd like to print
# "my" "how" 'you'
Run Code Online (Sandbox Code Playgroud)

请善待,我从Perl开始:-).

regex perl substitution

0
推荐指数
2
解决办法
54
查看次数

用perl中的其他名称替换哈希键

我想用另一个名字改变密钥.尝试下面的代码,但得到一些错误:

my @array = qw(1 hello ue hello 3 hellome 4 hellothere);
my %hash = @array;

foreach (Keys %hash) { 
   s/ue/u/g;
}
Run Code Online (Sandbox Code Playgroud)

输出错误:test.pl第35行的非法模数为零.

perl hash substitution

0
推荐指数
1
解决办法
284
查看次数

正则表达式用开括号替换正斜杠

我想使用正则表达式用开头括号替换正斜杠,用逗号分隔.例如,对于

$str = "c/g/c/g/c/g/c/g";
Run Code Online (Sandbox Code Playgroud)

结果应该是

$str = "c),(g),(c),(g),(c),(g),(c),(g";
Run Code Online (Sandbox Code Playgroud)

我写了以下这一行,但它不起作用

$observed = ~ s///);(//;
Run Code Online (Sandbox Code Playgroud)

任何建议如何解决它

regex perl substitution

0
推荐指数
1
解决办法
337
查看次数

如何从Ruby字符串中删除逗号?

我有字符串"12,34,56,789,George Carter,4".我希望输出看起来像:

12 34 56 789 George Carter 4
Run Code Online (Sandbox Code Playgroud)

我目前的代码不适合我.我试过了:

str = "12,34,56,789,George Carter,4"
str.split(",")
Run Code Online (Sandbox Code Playgroud)

ruby string substitution

0
推荐指数
1
解决办法
215
查看次数

替换数百万正则表达式(perl)

我有一个包含超过一百万行文本的文本文件.在每一行上都有一个字母数字代码,需要用名字代替.我尝试使用不同的Perl脚本执行此操作,但每次脚本因为使用太多内存而死亡.我是Perl的新手,所以我想我做错了什么,这使得工作太复杂了?到目前为止,我尝试过:

use strict;
use warnings;

my $filename = 'names.txt';

my $data = read_file($filename);

$data =~ s/88tx0p/Author1/g;
##and then there are 1,000,000+ other substitution regexes.

write_file($filename, $data);
exit;

sub read_file {
my ($filename) = @_;

open my $in, '<:encoding(UTF-8)', $filename or die "Could not open 
'$filename' for reading $!";
local $/ = undef;
my $all = <$in>;
close $in;

return $all;
}

sub write_file {
my ($filename, $content) = @_;

open my $out, '>:encoding(UTF-8)', $filename or die "Could not open 
'$filename' …
Run Code Online (Sandbox Code Playgroud)

regex perl substitution

0
推荐指数
1
解决办法
65
查看次数

如何正确链接 Perl 替换

我注意到当直接在终端中时,很容易将替换链接在一起:

perl -p -i -e 's/\xa/\xd/g; s/(<ACROSS PUZZLE>.+<GRID>\r\t)([A-Z\.]{15,})(\r\t.+)/\2/g' _temp.txt;
Run Code Online (Sandbox Code Playgroud)

但是,我没有成功地将两个替换组合在一起,因为我重写了我拥有的一些脚本。目前,作为两个单独的语句,它可以工作,但我不确定如何将这两行组合在一起:

$thisGrid =~ s/\xa/\xd/g;
$thisGrid =~ s/(<ACROSS PUZZLE>.+<GRID>\r\t)([A-Z\.]{15,})(\r\t.+)/\2/g; 
Run Code Online (Sandbox Code Playgroud)

首先我试过:

$thisGrid =~ s/\xa/\xd/g =~ s/(<ACROSS PUZZLE>.+<GRID>\r\t)([A-Z\.]{15,})(\r\t.+)/\2/g; 
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用。

其他类似的线程似乎没有回答我的问题。

regex perl substitution

0
推荐指数
1
解决办法
148
查看次数

submatch 命令在 Vim 中是如何工作的?

我遇到了这个非常漂亮和方便的命令

:.,$/^\d\+/\=submatch(0) + 1/g
Run Code Online (Sandbox Code Playgroud)

它的作用是查找当前行之后的任何行,并检查该行是否以数字开头。如果是,它将用其当前值的增量替换它;然而,我对这实际上是如何发生的感到很困惑。我猜这\=submatch(0)部分是在做繁重的工作,但我不知道如何做。还有一个+ 1aftersubmatch充当算术,这让我感到惊讶。我原以为它会作为文本插入,而不是对匹配的数字执行算术运算。

regex vim substitution neovim

0
推荐指数
1
解决办法
43
查看次数

在 Vim 中,如何对多个文件重复多次替换?

我有 10 个文件,每个文件都包含“apple”和“red”。我想在所有 10 个文件中将“苹果”更改为“梨”并将“红色”更改为“绿色”。

我目前的方法是:%s/apple/pear/g在每个文件中输入这个查找和替换命令(对于红色到绿色也是如此)。如何保存这两个替换并将它们应用于 10 个文件。更一般地说,我如何更有效地做到这一点?

我是 vim 的新手,不确定是否查看命令历史记录或 vim 寄存器或其他内容。

vim substitution

0
推荐指数
1
解决办法
118
查看次数

如何使用"s ///"运算符来更改值的数量?

我有一个包含以下内容的文件:

foo1 = 1

foo2 =  2

foo3 =    8

.
.
.
Run Code Online (Sandbox Code Playgroud)

我需要用一部分内存哈希值替换该文件中的值(1,2,8 ...),具有相同键的值(foo1 - > 33,foo2 - > 44,foo3 ......)如何使用"s ///"运算符更改它?如果有其他优雅的方式来进行,我会很高兴知道.

谢谢你的帮助,

Yohad.

perl substitution

-1
推荐指数
1
解决办法
175
查看次数

从对象列表中,获取其名称的字符向量

我有一个函数,它将函数列表作为参数.

library(moments)
library(plyr)
tests <- list(mean, varience, skewness, kurtosis)
f <- function(X, tests){
  out   <- each(... = tests)(X)   #each from plyr
  names(out) <- GetNames(tests)
  out
}
Run Code Online (Sandbox Code Playgroud)

我想GetNames获取对象列表,在本例中为函数,并将对象的名称作为文本返回.理想情况下,我想GetNames使用任何命名对象列表:

> GetNames(tests)
[1] "mean"     "varience" "skewness" "kurtosis"
Run Code Online (Sandbox Code Playgroud)

as.character(tests) 返回每个函数的代码文本,而不是它们的名称.

我试过了:

GN <- function(X) deparse(substitute(X))
GetNames <- function(X) lapply(tests, GN)
GetNames(tests)
Run Code Online (Sandbox Code Playgroud)

但这回归:

[[1]]
[1] "X[[i]]"

[[2]]
[1] "X[[i]]"

[[3]]
[1] "X[[i]]"

[[4]]
[1] "X[[i]]"
Run Code Online (Sandbox Code Playgroud)

在编写R代码时,我经常遇到这个问题的一些版本.我想要一个函数来评估它的参数的一些步骤,这里从tests它的对象的名称开始一步,然后停止并让我对结果做一些事情,这里将它们转换为字符串,而不是继续得到所指的对象我可以抓住它们之前的名字(名字).

evaluation scope r names substitution

-1
推荐指数
1
解决办法
44
查看次数

Perl:替换捕获的组

我最近了解了 Perl 捕获组。我想在 C++ 源代码中查找特定的文本行并替换该行中的数值。

我正在寻找的线路如下:

outf << EPS << "\t" << TOL << "\t" << ort << "\t" << bkw << "\t" << gflops << "\t# 99-99" << endl;
Run Code Online (Sandbox Code Playgroud)

我要替换的数值是99-99. 我想用由两个数字组成的类似结构替换它,例如6-86-16等等。

我用来查找此特定行和数字结构的正则表达式是:

$txt =~ /outf.*\\t\# (\d+-\d+).*<< endl;/;
Run Code Online (Sandbox Code Playgroud)

数字结构用组正确捕获,并将存储在$1. 的$txt是包含整个C ++文件的源代码的字符串变量。

我改变了正则表达式,试图将匹配的组替换为:

$txt =~ s/outf.*\\t\# (\d+-\d+).*<< endl;/$eb-$mb/;
Run Code Online (Sandbox Code Playgroud)

但它用存储在变量$eb和 中的新数字结构替换了整行$mb。有没有一种优雅的方法来仅替换捕获的组(\d+-\d+)

更新:反对,法官大人,我反对关闭我的问题。首先,它有一个更清晰的问题和一个最小的工作示例。其次,类似问题提供的答案既不雅观又繁琐。第三,Perl 因能够以多种不同方式解决同一问题而臭名昭著。我相信这里提供的答案更合适和清晰。

regex perl substitution

-1
推荐指数
1
解决办法
94
查看次数

在不使用任何其他命令的情况下在同一变量集行中组合多个 bash 参数替换

我想结合的例子:

sVar=$(whoami)
sVar=${sVar^}
sVar=${sVar::1}
Run Code Online (Sandbox Code Playgroud)

输出:

  • 用户名的大写第一个字符

要求:

  • 单线
  • 除了 $(whoami) 上面的初始命令替换之外,使用参数替换执行其余的处理

我意识到这可以用 tr、sed、awk、printf、cut 等来完成;但这不是问题的重点。

任何帮助表示赞赏!

这不是真正的代码或任何表明我真正想要做什么的东西。我经常默认(或尝试)只使用一个命令而不是连接多个命令。

我看到其他帖子指出在大括号内连接是不可能的,但我知道一切皆有可能。

请不要:

  • 引用其他帖子作为重复,说这是不可能的

variables parameters bash concatenation substitution

-5
推荐指数
1
解决办法
326
查看次数

标签 统计

substitution ×13

perl ×7

regex ×6

r ×2

vim ×2

bash ×1

concatenation ×1

evaluation ×1

hash ×1

names ×1

neovim ×1

parameters ×1

ruby ×1

scope ×1

string ×1

variables ×1