Grep表示“的意思:&引用;在一个例子中,但不是&引用;在另一个

Grep表示“的意思:&引用;在一个例子中,但不是&引用;在另一个,grep,bbedit,Grep,Bbedit,我需要查找:当出现在alpha char之后时,而不是在整数之前或之后时,并且设置grep时遇到问题 在下面的示例中,我只想在创建时间之后用一个选项卡替换:,而不是在数字之间的位置 创建时间:10/3/02 6:48:34 PM 我正在使用BBEdit。任何建议都将被感激地接受,谢谢。我不知道BBEdit,但这类东西在Perl中非常容易。例如: echo "Creation Time: 10/3/02 6:48:34 PM" | perl -ne '$_ =~ s/([^\d]):/$1\t/g

我需要查找
当出现在alpha char之后时,而不是在整数之前或之后时,并且设置grep时遇到问题

在下面的示例中,我只想在创建时间之后用一个选项卡替换
,而不是在数字之间的位置

创建时间:10/3/02 6:48:34 PM


我正在使用
BBEdit
。任何建议都将被感激地接受,谢谢。

我不知道BBEdit,但这类东西在Perl中非常容易。例如:

echo "Creation Time: 10/3/02 6:48:34 PM" | perl -ne '$_ =~ s/([^\d]):/$1\t/g; print $_'
或者,如果您有一个名为
stuff.txt
的文件,其中包含字符串,则可以键入:

perl -ne '$_ =~ s/([^\d]):/$1\t/g; print $_' stuff.txt
perl中的
-n
标志使其在文件或STDIN中循环,选项的
-e
部分在引号中运行程序。循环输入时,该行存储在变量
$\uu
中。因此,我要做的是替换
$\uuu
的内容,用匹配的部分(
$1
等于第一个括号内的部分)和制表符匹配任何不是数字的部分(括号内的部分),后跟
。更换后,我打印修改后的
$\uu

所以你可以试试

perl -ne '$_ =~ s/([^\d]):/$1\t/g; print $_' stuff.txt > check.txt

查看
check.txt
,确保我没有把你引入歧途,然后把它复制过来。

非常感谢你的加入。但是,当我将cd刻录到测试文件所在的文件夹中,并以“perl-ne'$\=~s/([^\d]):/$1\t/g;print$\'000001.txt”(不带引号)的形式运行上述字符串时,OSX终端中会出现奇数输出(文件中一行中的一部分文本)。此外,我不确定(不知道Perl)我将在何处输入或更改以允许在alphachar加冒号之后插入制表符??因此perl本身将把它的输出打印到终端。如果在该字符串后面跟随
>test.txt
,则输出将进入
test.txt
。然后,在将文件移动到
000001.txt
之前,您可以查看该文件以确保其正确。你可以看看。我想长话短说,试试
perl-ne'$\=~s/([^\d]):/$1\t/g;打印$\u00001.txt>test.txt
并让我知道
test.txt
中的内容。(注意,如果它已经存在,这将覆盖
test.txt
,因此如果不想这样做,请选择其他名称。)这绝对成功!非常感谢你的帮助。结果text.txt在Excel中打开,数据按预期显示在适当的列中。BBEdit使用PCRE,以便正则表达式也可以在应用程序中工作。