我在文件夹中有一个文本文件。每个文件都包含一系列数字:
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
任何人都知道我应该改变哪一部分?非常感谢你!
答案 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