我想从文件中取出第一行并将其放在其余每一行的开头。例如,我该如何转换:
black
widow
card
Friday
berry
进入这个?:
black: widow
black: card
black: Friday
black: berry
是否可以在不显式创建额外文件和变量的情况下执行此操作?
答案1
通过简单的awk
命令你就可以做到:
awk 'NR == 1 {a=$0;next} { printf("%s: %s\n",a,$0)}' file_name
答案2
这可能不是最好的在 sed 中执行此操作的方法,但是:
$ sed '1{h;d;}; G; s/\(.*\)\n\(.*\)/\2: \1/' file
black: widow
black: card
black: Friday
black: berry
解释:
1{h;d;}
对于第一行,复制模式空间以保留空间,然后删除G
将换行符附加到模式空间的内容,然后将保留空间的内容附加到模式空间的内容。现在,我们在模式空间中有正确的两个单词,但顺序错误且分隔符错误(\n
而不是:
)s/\(.*\)\n\(.*\)/\2: \1/'
交换换行符之前和之后的部分,用冒号和空格替换换行符