如何为文件的每一行添加前缀/后缀?

如何为文件的每一行添加前缀/后缀?

例如,file1 包含:

entry1:value1
entry2:value2
entry3:value3

现在我想在每一行添加前缀“file1:”:

file1:entry1:value1
file1:entry2:value2
file1:entry3:value3

我怎样才能在一个命令行中做到这一点?

我正在使用 Bash。

顺便说一句,必须保留前导空格,所以 Bash 内置的读取行对我来说不起作用。

答案1

% sed 's/^/file1:/' file1

答案2

对我来说,最易读、最容易记住的是添加前缀和后缀如下:

$ echo "  foo bar  " | awk '{print "--"$0"++"}'

输出

  --  foo bar  ++

请注意,包括前导/尾随空格在内的整个输入都会被保留。

答案3

使用 AWK,您可以添加几乎任何前缀:

awk -v PRE='anything:' '{$0=PRE$0; print}' file1

即使对于花哨的不可打印字符,这也将起作用。

答案4

转义特殊字符:

printf -v prefix %q 'ab\cd%;,: /{][}-+*'; prefix=${prefix////\\/}; sed "s/^/$prefix/" file

相关内容