파일을 아래로 이동하면 새 줄이 생성되는 것처럼 두 번째 파일 태그 "b"가 첫 번째 파일 태그 "a"를 인쇄하고 싶습니다. 두 번째 파일의 첫 번째 줄이 마지막에 도달할 때까지 끝까지 인쇄하고 싶습니다. 첫 번째 파일의 줄. 이것을 파일 자체에 넣어야 하나요? 아니면 터미널에서 할 수 있나요?
지금 하는 일:
paste -d ' ' a b
1 a
2 b
3 c
4 d
5 e
6
7
8
9
원하는 출력:
1 ↓
2 a
3 b
4 c
5 d
6 e
7
8
9
1
2
3 ↓
4 a
5 b
6 c
7 d
8 e
9
Re-looping
1 b
2 c
3 d
4 e
5
6
7 ↓
8 List is about to loop
9 a
답변1
이 문서는 귀하의 문제를 직접적으로 해결하지는 않지만 귀하가 찾고 있는 것에 더 가까운 방향으로 안내해 줄 것입니다.
추신: 그런데, 저는 paste
이 데이터 처리 작업에 그것을 사용하지 않을 것입니다. 나는 awk나 다른 더 적합한 도구를 선택하겠습니다.
어쨌든 를 사용하면 paste
다음과 같은 "더러운" 솔루션을 고려할 수 있습니다.
사례 1:
$ k=3
$ paste -d ' ' a <(printf ' %.0s\n' $(seq 1 $k);cat b)
1
2
3
4 a
5 b
6 c
7 d
8 e
9
#You can adjust the value of $k with a kind of loop
사례 2:
$ k=3
$ s=4
$ paste -d ' ' a <(printf ' %.0s\n' $(seq 1 $k);tail -n +$s b)
1
2
3
4 d
5 e
6
7
8
9
답변2
a
in 단어 와 in 단어 의 외적을 만드는 것이 목적이라면 다음과 같이 사용할 b
수 있습니다 .join
$ join -1 2 -2 2 a b
1 a
1 b
1 c
1 d
1 e
2 a
2 b
2 c
2 d
2 e
3 a
3 b
3 c
3 d
3 e
4 a
4 b
4 c
4 d
4 e
5 a
5 b
5 c
5 d
5 e
6 a
6 b
6 c
6 d
6 e
7 a
7 b
7 c
7 d
7 e
8 a
8 b
8 c
8 d
8 e
9 a
9 b
9 c
9 d
9 e
존재하지 않는 필드에서 파일을 결합하면 두 파일 모두에 가능한 모든 행 조합이 생성됩니다. 이렇게 하면 각 줄의 시작 부분에 공백이 삽입됩니다.