Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 将文件行与同一文件的每一行进行比较_Bash_Matlab_While Loop_Nested - Fatal编程技术网

Bash 将文件行与同一文件的每一行进行比较

Bash 将文件行与同一文件的每一行进行比较,bash,matlab,while-loop,nested,Bash,Matlab,While Loop,Nested,我正在尝试编写一个程序,它将打印出文件中的每一行,并在最后添加该文件的另一行,基本上是从每一行的一部分创建对。如果这条线是相同的,它将什么也不做。此外,它必须避免重复相同的对。B和B是一样的 总之 文件输入: otherstuff A otherstuff B otherstuff C otherstuff D 输出: A B A C A D B C B D C D 我试图用BASH脚本实现这一点,但遇到了麻烦,因为我无法使嵌套的while循环正常工作。它将读取第一行,相互比较,

我正在尝试编写一个程序,它将打印出文件中的每一行,并在最后添加该文件的另一行,基本上是从每一行的一部分创建对。如果这条线是相同的,它将什么也不做。此外,它必须避免重复相同的对。B和B是一样的

总之

文件输入:

otherstuff A
otherstuff B     
otherstuff C 
otherstuff D
输出:

A B
A C
A D
B C
B D
C D
我试图用BASH脚本实现这一点,但遇到了麻烦,因为我无法使嵌套的while循环正常工作。它将读取第一行,相互比较,然后停止(基本上只输出上面示例输出中的前3行,外部while循环只运行一次)

我还怀疑我可能可以使用MATLAB实现这一点,所以使用MATLAB的建议也很受欢迎

这是我到目前为止已经完成的bash脚本。正如我所说的,我无法正确打印,因为外部循环只运行一次

#READS IN file from terminal
FILE1=$1
#START count at 0
count0=
exec 3<&0
exec 0< $FILE1

while read LINEa; do    
while read LINEb; do

    eventIDa=$(echo $LINEa | cut -c20-23)
    eventIDb=$(echo $LINEb | cut -c20-23)
    echo $eventIDa $eventIDb
done
done    
#从终端读取文件
FILE1=$1
#从0开始计数
伯爵0=

exec 3假设其他内容不相关(否则您以后当然可以添加它),这应该在Matlab中实现:

 combnk({'A' 'B' 'C' 'D'},2)
使用bash:

#!/bin/bash

[ -f "$1" ] || { echo >&2 "File not found"; exit 1; }

mapfile -t lines < <(cut -c20-23 <"$1" | sort | uniq)

for i in ${!lines[@]}; do
    elem1=${lines[$i]}
    unset lines[$i]
    for elem2 in "${lines[@]}"; do
        echo "$elem1" "$elem2"
    done
done

仅仅因为我的实际数据有几百行长,这是行不通的。我只是用ABCD作为一个例子example@AlphaBetaParkingLot通过编程提取字符串的最后一部分并不难。然而,对于如何做到这一点的有用解释,我需要更多地了解这些东西是如何存储的。
123456789012345678 A
123456789012345678 B
123456789012345678 C
123456789012345678 D