Linux 在所有行中添加文本

Linux 在所有行中添加文本,linux,bash,scripting,Linux,Bash,Scripting,我在linux环境中工作,我想获得一些关于bash脚本的帮助,以减少简单的重复 我有一长串的文件名(确切地说是937个)。在该文件的一行中,只有一个文件名,因此,文件中总共有937行 我想在文件名前添加某些文本,并在文件名后按顺序添加数字 所以我希望在文本文件中有这样的内容 aa.exe bb.exe cc.exe 到 任何帮助都将不胜感激。这里是一个简单的Python解决方案,将其保存在名为so.py的文本文件中。 由于您仍在使用Python v 2.4.2,因此此代码应适用于早期版本:

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

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

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

所以我希望在文本文件中有这样的内容

aa.exe

bb.exe

cc.exe


任何帮助都将不胜感激。

这里是一个简单的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\u text
中固定

asd    aa.exe    1
asd    bb.exe    2
asd    cc.exe    3
要运行脚本,请在Linux提示符下发出以下命令:

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

chmod+xso.py仅用于踢腿,这里有一个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
纯Bash:

while read -r line
do
    echo "asd $line $((++i))"
done < inputfile
读取时-r行
做
echo“asd$行$(++i))”
完成<输入文件
在vim中:

:%s/.\+/\=printf("%s %s %d", "asdf", submatch(0), line("."))/

文件名是否在简单的.txt文件中?您希望使用某种语言或正则表达式吗?特定的软件或技术???我在linux bash环境中工作。似乎我不能使用python。它给了我在add_text命令中找不到的命令。我有python 2.4.2,我在第5行得到了语法错误:无效语法,open('filename.txt')为fn:@doyongkim Wow。。这很老套:-)给我5分钟,我会更新它,这很琐碎。@doyongkim我刚才放在那里的东西应该有用,我去掉了enumerate。您可能需要考虑在某些时候升级Python。对于大多数Linux版本来说,2.6是相当标准的,并且工作得相当好。v3.2.3是最新的版本。enumerate给出了问题,typeerror:enermerate()正好接受第8ha行给出的1个参数2。。这是一个很好的例子(我非常喜欢
awk
,奇怪的是我没有想到它)。不过Python更有趣:)@Levon:解决这个问题的方法确实很多是-以“:”开头的命令表示要从vim命令行运行。