我有一个类似的文件:
1
2
3
4
5
a
b
c
d
e
想把它说成:
1 a
2 b
3 c
4 d
5 e
在bash中有快速的方法吗?
答案 0 :(得分:2)
pr
是用于列举数据的工具:
pr -s" " -T -2 filename
答案 1 :(得分:1)
使用paste
和流程替换:
$ paste -d " " <(sed -n '1,/^$/{/^$/d;p}' file) <(sed -n '/^$/,${//!p}' file)
1 a
2 b
3 c
4 d
5 e
答案 2 :(得分:1)
简单的bash脚本完成工作:
nums=()
is_line=0
cat ${1} | while read line
do
if [[ ${line} == '' ]]
then
is_line=1
else
if [[ ${is_line} == 0 ]]
then
nums=("${nums[@]}" "${line}")
else
echo ${nums[0]} ${line}
nums=(${nums[*]:1})
fi
fi
done
运行方式如下:./script filename
示例:
$ ./script filein
1 a
2 b
3 c
4 d
5 e
答案 3 :(得分:0)
$ rs 2 5 <file | rs -T
1 a
2 b
3 c
4 d
5 e
如果您希望关闭额外的分隔符空间,请在后者-g1
中使用rs
。说明:
file
-T
转置它