我有一个大约 1000 行的文件,这里是前几行:
head file.regions.txt
cregions1
cregions2
cregions3
cregions4
cregions5
cregions6
cregions7
cregions8
cregions9
cregions10
...
我想在数字周围添加括号,并在数字后面的每一行添加“<-”!这是我想要的输出
head file.regions.output.txt
cregions[1] <-
cregions[2] <-
cregions[3] <-
cregions[4] <-
cregions[5] <-
cregions[6] <-
cregions[7] <-
cregions[8] <-
cregions[9] <-
cregions[10] <-
...
答案1
怎么样
sed -e 's/$/] <-/g' -e 's/cregions/cregions[/g' yourFile
答案2
您可以使用:
sed -r 's/^(cregions)([0-9]+)$/\1[\2] <-/' file.regions.txt >file.regions.output.txt
请注意,这不会添加任何前导制表符或空格。 (您在问题描述中没有提到这一点,但您的输出示例似乎有它们。)
这只会更改整个内容为 的行,并用一个或多个数字代替cregionsN
N
。如果您想将转换应用到任何以一位或多位数字结尾的行,您可以使用这个更简单的sed
命令:
sed -r 's/[0-9]+$/[&] <-/' file.regions.txt >file.regions.output.txt
(谢谢感谢格伦·杰克曼指出此版本的命令不需要捕获组,因为它可以简单地使用&
,它代表整个匹配。)
使用这些命令中的任何一个,您当然可以查看输出,而不是通过省略重定向将其写入文件>file.regions.output.txt
。