我有一个文件如下:
line1
line2
line3
我想要得到:
prefixline1
prefixline2
prefixline3
我可以编写Ruby脚本,但如果我不需要这样做会更好。
前缀将包含/。为路径,例如“/opt/workdir/”。
我有一个文件如下:
line1
line2
line3
我想要得到:
prefixline1
prefixline2
prefixline3
我可以编写Ruby脚本,但如果我不需要这样做会更好。
前缀将包含/。为路径,例如“/opt/workdir/”。
当前回答
艾德:使用
ed infile <<'EOE'
,s/^/prefix/
wq
EOE
对于每一行(,),它用前缀替换行(^)的开头。Wq保存并退出。
如果替换字符串包含斜杠,我们可以使用不同的分隔符代替s:
ed infile <<'EOE'
,s#^#/opt/workdir/#
wq
EOE
我引用了here-doc分隔符EOE(“end of ed”),以防止参数扩展。在这个例子中,不加引号也可以工作,但是如果ed脚本中出现$,这是一个很好的实践,可以防止出现意外。
其他回答
awk '$0="prefix"$0' file > new_file
在awk中,默认操作是'{print $0}'(即打印整行),因此上面的操作相当于:
awk '{print "prefix"$0}' file > new_file
使用Perl(就地替换):
perl -pi 's/^/prefix/' file
如果您需要在每行具有特定字符串的开头预先添加文本,请尝试以下操作。在下面的例子中,我在每一行有“rock”的行开始添加#。
sed -i -e 's/^.*rock.*/#&/' file_name
使用Pythonize (pz):
pz '"preix"+s' <filename
在bash的命令行上使用for循环的简单解决方案:
for i in $(cat yourfile.txt); do echo "prefix$i"; done
将输出保存到一个文件:
for i in $(cat yourfile.txt); do echo "prefix$i"; done > yourfilewithprefixes.txt
如果你有Perl:
perl -pe 's/^/PREFIX/' input.file