2개의 텍스트 파일이 있습니다.
텍스트1.txt:
첫 번째는 이런 식으로 구성됩니다.
<title>Developing a wireless </title> ##www.google.com##
<title>Webdriver Actionchains </title> ##www.alfa.com##
<title>Populating a DataGridViewComboBox </title> ##www.beta.com##
텍스트2.txt
두 번째 텍스트 파일은 다음과 같이 구성됩니다.
hhppKJt.png ##www.beta.com##
MchrzjL.zip ##www.google.com##
새로 만드는 방법이 있는지 물어봅니다제삼텍스트 파일이지만 다음과 같이 구성되어 있습니다.
<title>Developing a wireless </title> ##www.google.com## MchrzjL.zip
<title>Populating a DataGridViewComboBox </title> ##www.beta.com## hhppKJt.png
<title>Webdriver Actionchains </title> ##www.alfa.com##
즉, 스크립트(powershell, 배치 또는 일부 비교 프로그램)는 두 텍스트 파일 사이에 공통 문자열이 있는지 확인하고 해당 파일을 검색한 후 해당 특정 문자열을 새 행으로 연결해야 합니다.
예를 들어, 두 경우 모두첫 번째그리고두번째텍스트 파일에는 다음과 같은 공통 문자열이 있습니다.
##www.beta.com##
##www.google.com##
이것이 사실이라면 이 문자열을 결합해야 합니다
hhppKJt.png
MchrzjL.zip
이런 방식으로 첫 번째 텍스트 파일의 상대 행을 강화합니다.
<title>Developing a wireless </title> ##www.google.com## MchrzjL.zip
<title>Populating a DataGridViewComboBox </title> ##www.beta.com## hhppKJt.png
<title>Webdriver Actionchains </title> ##www.alfa.com##
답변1
#! /usr/bin/awk -f
BEGIN {
C=0;
}
{
if (ARGIND == 1) {
X = $NF
T0[$NF] = C++
$NF = ""
T1[X] = $0
} else {
X = $NF
T0[$NF] = C++
$NF = ""
T2[X] = $0
}
}
END {
for (X in T0) {
print T1[X],X,T2[X]
}
}
위의 내용을 모두 스크립트에 넣으세요. Join.sh를 실행하고 이 스크립트를 실행 가능하게 만듭니다. 두 개의 파일 이름을 매개변수로 사용하여 스크립트를 호출합니다. 예:
./join.sh text1.txt text2.sh
m:n 비율을 충족시키려고 노력 중입니다.
#! /usr/bin/awk -f
BEGIN {
OFS=FS=";"
C=0;
}
{
if (ARGIND == 1) {
X = $NF
T0[$NF] = C++
$NF = ""
if (T1[X]) {
T1[X] = T1[X] $0
} else {
T1[X] = $0
}
} else {
X = $NF
T0[$NF] = C++
$NF = ""
if (T2[X]) {
T2[X] = T2[X] $0
} else {
T2[X] = $0
}
}
}
END {
for (X in T0) {
# concatenate T1[X] and X, since T1[X] ends with ";"
print T1[X] X, T2[X]
}
}