我有三个文件:
文件1
one
uno
un
1
文件2
two
dos
2
文件3 三 特雷斯 特鲁瓦 3
这是我的剧本:
#!/system/bin/bash
list=($(cat /sdcard/lst1 ))
list2=($(cat /sdcard/lst2 ))
list3=($(cat /sdcard/lst3 ))
for i in ${!list[*]} ; do
echo -e "${list[$i]} ${list2[$i]}
${list3[$i]} ; done
这是我得到的输出:
one two three
uno dos tres
un 2 trois
1 3
这里是所需的输出:
one two three
uno dos tres
un trois
1 2 3
我也尝试过:
IFS=$'\n' ; set -f ;
但它仍然无效...
我需要改变什么?
它在Android上,没有paste
命令。
答案 0 :(得分:1)
paste f1 f2 f3
应该完成给你的工作
one two three
uno dos tres
un trois
1 2 3
编辑:在Android中,默认情况下无法使用粘贴
如果file1,file2,file3是三个文件,那么脚本下面就可以完成这项工作
awk '{line[FNR]=(line[FNR]=="")?$0:line[FNR] "\t" $0}END{for(i=1;i<=FNR;i++){print line[i]}}' file*
<强>输出强>
one two three
uno dos tres
un trois
1 2 3
<强>参考强>
答案 1 :(得分:0)
Bash使用mapfile
命令(或其同义词,readarray
)将文件读入数组,一次一行。与list=($(cat file))
不同,$IFS
实际上只是使用mapfile
shell变量将整个文件拆分为数组元素(因此删除空行),#!/bin/bash
for i in {1..3}; do
# Assign file 1 to arr1, file2 to arr2 and file3 to arr3
mapfile -t arr"$i" < file"$i"
done
# Loop over indices of arr1
for i in "${!arr1[@]}"; do
# Print elements number i from each array
printf '%s\t%s\t%s\n' "${arr1[i]}" "${arr2[i]}" "${arr3[i]}"
done
为数组元素指定一个空行。 / p>
使用Bash,我按如下方式编写:
mapfile
<强>说明:强>
-t
中的数组名称可以&#34;构建&#34;。printf
选项会删除尾随换行符。printf
。echo -e
cors:
allowed-origins: "*"
allowed-methods: GET, PUT, POST, DELETE, OPTIONS
allowed-headers: "*"
exposed-headers:
allow-credentials: true
max-age: 1800
的参数中。