在每行的开头添加前缀string
我有一个文件如下:
line1 line2 line3
我想得到:
prefixline1 prefixline2 prefixline3
我可以写一个Ruby脚本,但是如果我不需要,那会更好。
prefix
将包含/
。 这是一条道路。 /opt/workdir/
例如。
sed -e 's/^/prefix/' file # If you want to edit the file in-place sed -i -e 's/^/prefix/' file # If you want to create a new file sed -e 's/^/prefix/' file > file.new
如果prefix
包含/
,则可以使用其他任何不在prefix
字符,或者转义/
,以便sed
命令变为
's#^#/opt/workdir#' # or 's/^/\/opt\/workdir/'
awk '$0="prefix"$0' file > new_file
您可以在Ex模式下使用Vim:
ex -sc '%s/^/prefix/|x' file
-
%
select所有行 -
取而代之
-
保存并closures
如果你的前缀有点复杂,就把它放在一个variables中:
prefix=path/to/file/
然后,你通过这个variables让awk处理它:
awk -v prefix="$prefix" '{print prefix $0}' input_file.txt
如果你有Perl:
perl -pe 's/^/PREFIX/' input.file
使用shell:
#!/bin/bash prefix="something" file="file" while read -r line do echo "${prefix}$line" done <$file > newfile mv newfile $file
虽然我不认为pierr有这个问题,但我需要一个解决scheme,不会延迟文件的实时“尾部”的输出,因为我想同时监视多个警报日志,在每行前加上各自日志的名称。
不幸的是,sed,cut等引入了太多的缓冲,使我看不到最新的线路。 Steven Pennybuild议使用nl
的-s
选项是有趣的,testingcertificate它没有引入关注我的不需要的缓冲。
然而,使用nl
有一些问题,与删除不需要的行号的愿望有关(即使你不关心它的美观性,可能会出现使用额外列的情况) 。 首先,使用“剪切”去除数字重新引入缓冲问题,所以它破坏了解决scheme。 其次,使用“-w1”没有帮助,因为这不会将行号限制为单列 – 只要需要更多数字,它就会变得更宽。
如果你想在其他地方捕捉到这些并不美妙,但是因为这正是我不需要做的事情(所有东西都已经被写入日志文件,我只是想实时看几个),最好的方法丢失行号,只有我的前缀是用回车(CR或^ M或Ctrl-M)启动-s
string。 举个例子:
#!/bin/ksh # Monitor the widget, framas, and dweezil # log files until the operator hits <enter> # to end monitoring. PGRP=$$ for LOGFILE in widget framas dweezil do ( tail -f $LOGFILE 2>&1 | nl -s"^M${LOGFILE}> " ) & sleep 1 done read KILLEM kill -- -${PGRP}
下面是一个使用sed
方法的例子:
$ cat /path/to/some/file | prefix_lines "WOW: " WOW: some text WOW: another line WOW: more text
prefix_lines
function show_help() { IT=$(CAT <<EOF Usage: PREFIX {FILE} eg cat /path/to/file | prefix_lines "WOW: " WOW: some text WOW: another line WOW: more text ) echo "$IT" exit } # Require a prefix if [ -z "$1" ] then show_help fi # Check if input is from stdin or a file FILE=$2 if [ -z "$2" ] then # If no stdin exists if [ -t 0 ]; then show_help fi FILE=/dev/stdin fi # Now prefix the output PREFIX=$1 sed -e "s/^/$PREFIX/" $FILE
请使用下面的命令
SED将以前缀replace开头。
sed的%^%前缀%“文件