我有两个文件,第一个文件有一行,第二个文件有一列我想通过将行文件中的每个值移动到列文件中的相同值来合并两个文件,然后替换每个值之前的每个空单元格带有 x 值,后面带有 y 值。简而言之,我想要那些输入文件
row file
6 8 2 3 7 6 ...
column file
1
2
3
4
5
6
7
8
.
.
组合后,结果应如下
output file
1 x x x x x x ....
2 x x 2 x x x
3 x x y 3 x x
4 x x y y x x
5 x x y y x x
6 6 x y y x 6
7 y x y y 7 y
8 y 8 y y y y
9 y y y y y y
....
....
答案1
只需将一个文件加载到内存中,然后根据内存中的值处理另一个文件。
不要作弊...先自己尝试一下。即使你尝试了一点不起作用,然后询问你的代码。如果你不亲自尝试,你将一无所获。
在这里...我会让你开始。以下是在 bash 中创建数组的方法:
# with while read
array=()
while read line; do
array+=("$line")
done < somefile
# the other way... sometimes necessary
IFS=$'\n\t ' # example IFS... in this case I am setting the normal default. For data that includes spaces, you exclude space here. If your data contains all 3, you have to use while read.
array=()
for line in $(cat somefile); do
array+=("$line")
done
# and here's looping over it
for n in "${array[@]}"; do
echo "$n"
done
我无法弄清楚多行“剧透”的语法...所以这里有一个 1 行脚本将打印答案(在 bash 中):
base64 -d <<<“==”