4

我在 linux 环境中工作,我想获得一些关于 bash 脚本的帮助,以减少简单的重复。

我有一长串文件名(准确地说是 937)。在该文件的一行中,只有一个文件名,因此该文件共有 937 行。

我想在文件名前添加某些文本,并在文件名后按顺序添加数字。

所以我想在文本文件中有这样的东西。

aa.exe

bb.exe

cc.exe

asd aa.exe 1

asd bb.exe 2

asd cc.exe 3

任何帮助将不胜感激。

4

4 回答 4

5

只是为了好玩,这是一个 awk 版本:

awk '{print "foo", $0, NR}' files.lst 

如果files.lst包括:

a.txt
b.txt
c.txt

...然后这将输出:

foo a.txt 1
foo b.txt 2
foo c.txt 3
于 2012-06-11T18:33:43.177 回答
2

纯重击:

while read -r line
do
    echo "asd $line $((++i))"
done < inputfile
于 2012-06-11T20:01:58.373 回答
1

这是一个简单的 Python 解决方案,将其保存在一个名为so.py. 由于您仍在使用 Python v 2.4.2,因此此代码应该适用于该早期版本:

#!/usr/bin/python

add_text = 'asd'  # the string to put in front

fn  = open('filenames.txt')
outf =  open('outdata.txt', 'w')

i = 1
for filename in fn:
    outf.write('%7s %10s %d\n' % (add_text, filename.strip(), i))
    i += 1

fn.close()
outf.close()

期望文件的名称在 file 中filenames.txt,并且生成的输出到 file outdata.txt

asd    aa.exe    1
asd    bb.exe    2
asd    cc.exe    3

在文件名之前添加的文本在变量中是固定的add_text

要运行脚本,请在 Linux 提示符下发出以下命令:

chmod +x so.py    <-- this is only needed once
./so.py           <-- to run the script

它将使用输入文件生成输出文件。

于 2012-06-11T18:01:10.983 回答
0

在 vim 中:

:%s/.\+/\=printf("%s %s %d", "asdf", submatch(0), line("."))/
于 2012-06-11T20:34:31.567 回答