如何创造' \'在一系列数字之前?

时间:2015-01-20 09:27:46

标签: regex shell

我在文件夹中有一个文本文件。每个文件都包含一系列数字:

  1
  1
  2 
  3 
  4 
  5

表示第一个文件,

  1
  7
  7 
  4 
  6 
  1

表示第二个文件,依此类推。  现在我想将所有这些文本文件复制到一个新的主文件中,每个文件名都在每个部分的开头,一个'。'在每个文件的末尾,一个' \'在每个数字之前。我的意思是我希望结果是这样的:

#!MLF!#
*/faem0_si762.txt
\1
\1
\2 
\3 
\4 
\5
 .
*/fajw0_sx3.txt
\1
\7
\7 
\4 
\6 
\1
.
*/faem0_si1392.txt
.
.
.

我已经编写了一个shell脚本来完成它,但我坚持使用\之前的数字。这是我的代码:

 #!/bin/sh

cd clusteredlabels_train
echo  "#!MLF!#";
for i in *;

do
     echo "\"*/$i\"";
     cat "$i";
     echo ".";
done 

任何人都知道我应该改变哪一部分?非常感谢你!

2 个答案:

答案 0 :(得分:1)

在脚本中替换此行

cat "$i";

sed -r 's/^([[:digit:]]+)/\\\1/' "$i"

描述

s/^([[:digit:]]+)/\\\1/

我们要求sed在一行(^)的开头找到一个或多个数字([[:digit:]]+)。然后我们要求它用前面的反斜杠(\0)重写这些数字(\\)。

经过测试 Windows 7 - cygwin 2.852(64位) - sed(GNU sed)4.2.2

答案 1 :(得分:1)

例如,使用sed在任意行之前插入\

 #!/bin/sh

cd clusteredlabels_train
echo  "#!MLF!#";
for i in *;

do
     echo "\"*/$i\"";
     sed -r 's/^/\\/' "$i";
     echo ".";
done