我有一个文件如下:
line1
line2
line3
我想要得到:
prefixline1
prefixline2
prefixline3
我可以编写Ruby脚本,但如果我不需要这样做会更好。
前缀将包含/。为路径,例如“/opt/workdir/”。
我有一个文件如下:
line1
line2
line3
我想要得到:
prefixline1
prefixline2
prefixline3
我可以编写Ruby脚本,但如果我不需要这样做会更好。
前缀将包含/。为路径,例如“/opt/workdir/”。
当前回答
你可以用AWK来做
echo example| awk '{print "prefix"$0}'
or
awk '{print "prefix"$0}' file.txt > output.txt
对于后缀:awk '{打印$0"后缀"}'
对于前缀和后缀:awk '{打印“前缀”$0“后缀”}'
其他回答
使用&(与模式"匹配的整个输入部分):
cat in.txt | sed -e "s/.*/prefix&/" > out.txt
或者使用反向引用:
cat in.txt | sed -e "s/\(.*\)/prefix\1/" > out.txt
下面是一个使用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}
e.g.
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
使用Pythonize (pz):
pz '"preix"+s' <filename
# 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
如果前缀包含“/”,则可以使用前缀以外的任何字符或 转义/,这样sed命令就变成了
's#^#/opt/workdir#'
# or
's/^/\/opt\/workdir/'
awk '$0="prefix"$0' file > new_file
在awk中,默认操作是'{print $0}'(即打印整行),因此上面的操作相当于:
awk '{print "prefix"$0}' file > new_file
使用Perl(就地替换):
perl -pi 's/^/prefix/' file