我有一个这样的文件:
20180127200000
DEFAULT, Proc_m0_s1
DEFAULT, Proc_m0_s2
DEFAULT, Proc_m0_s3
20180127200001
DEFAULT, Proc_m0_s1
DEFAULT, Proc_m0_s2
DEFAULT, Proc_m0_s3
我想转换为:
20180127200000 DEFAULT, Proc_m0_s1
20180127200000 DEFAULT, Proc_m0_s2
20180127200000 DEFAULT, Proc_m0_s3
20180127200001 DEFAULT, Proc_m0_s1
20180127200001 DEFAULT, Proc_m0_s2
20180127200001 DEFAULT, Proc_m0_s3
时间戳每4行显示一次。
答案 0 :(得分:1)
对于这种类型的任务,awk应该比shell循环更快更简单。
awk 'NR%4==1 { time=$1; next }
{ print time " " $0 }' file
NR
是行号。如果模数为4的行号是1,请记住第一个字段但不要打印。否则,使用记住的值和空格作为前缀进行打印。
答案 1 :(得分:0)
iconvert() {
while true; do
read linePrefix || return 0
for i in $(seq $((prefix_lines - 1))); do
read line || return 0
echo "$linePrefix" "$line"
done
done
}
您只需拨打iconvert
即可:
prefix_lines=4
iconvert < file.txt
提供您想要的输出。