This question is strongly related to this and this question. I have a file that contains several lines where each line is a path to a file. Now I want to pair each line with each different line (not itself). Also a pair A B
is equal to a B A
pair for my purposes, so only one of these combinations should be produced.
Example
files.dat
reads like this in a shorthand notation, each letter is a file path (absolute or relative)
a
b
c
d
e
Then my result should look something like this:
a b
a c
a d
a e
b c
b d
b e
c d
c e
d e
Preferrably I would like to solve this in bash. Unlike the other questions, my file list is rather small (about 200 lines), so using loops and RAM capacity pose no problems.
Use this command:
awk '{ name[$1]++ }
END { PROCINFO["sorted_in"] = "@ind_str_asc"
for (v1 in name) for (v2 in name) if (v1 < v2) print v1, v2 }
' files.dat
PROCINFO
may be a gawk
extension. If your awk
doesn’t support it, just leave out the PROCINFO["sorted_in"] = "@ind_str_asc"
line and pipe the output into sort
(if you want the output sorted).
(This does not require the input to be sorted.)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다