匹配第一个文件的每行逗号前的第一个值与第二个文件按行
我的第一个文件 -
#cat 123
tom,123
jack,222
rock
google,908
mohan,323
ram,789
我的第二文件 -
#cat www
vicky,tom,home
google,monk,uber
dhoom,monk,uber
ram,monk,uber
rock,monk,uber
jack,monk,uber
所需的输出 -
#cat match_output.txt
tom,123,vicky,tom,home
rock,rock,monk,uber
jack,222,jack,monk,uber
google,908,google,monk,uber
ram,789,ram,monk,uber
目前,我只得到这个 -
#cat match_output.txt
rock,monk,uber
我的脚本 -
#!/bin/bash
# because File2 is bigger, it gets the main loop.
# read each line of File2
>/var/lib/jenkins/Jack/match_output.txt
while IFS=, read -r string; do
# read each line of File1.txt
while IFS=, read -r string2; do
# check match, and write if needed.
if [[ $string == *"$string2"* ]]; then
echo $string >> match_output.txt
echo "wrote "$string" to match_output.txt..."
fi
done < /var/lib/jenkins/Jack/123
done < /var/lib/jenkins/Jack/www
无法在每行逗号之前读取第一个文件的第一个值,并通过行与第二个文件匹配,并打印在新文件中输出...
My 1st file -
#cat 123
tom,123
jack,222
rock
google,908
mohan,323
ram,789
My 2nd file -
#cat www
vicky,tom,home
google,monk,uber
dhoom,monk,uber
ram,monk,uber
rock,monk,uber
jack,monk,uber
Desired output -
#cat match_output.txt
tom,123,vicky,tom,home
rock,rock,monk,uber
jack,222,jack,monk,uber
google,908,google,monk,uber
ram,789,ram,monk,uber
For now, I'm getting only this -
#cat match_output.txt
rock,monk,uber
My Script -
#!/bin/bash
# because File2 is bigger, it gets the main loop.
# read each line of File2
>/var/lib/jenkins/Jack/match_output.txt
while IFS=, read -r string; do
# read each line of File1.txt
while IFS=, read -r string2; do
# check match, and write if needed.
if [[ $string == *"$string2"* ]]; then
echo $string >> match_output.txt
echo "wrote "$string" to match_output.txt..."
fi
done < /var/lib/jenkins/Jack/123
done < /var/lib/jenkins/Jack/www
Not able to read 1st value of 1st file before the comma of each line and match with 2nd file line by line and print the output in a new file....
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
更安全,更有效的方法是使用
awk
:Safer and more efficient way is to use
awk
:要获取逗号之前的第一个值,可以使用
cut
命令。使用以下代码
可以比较完整的行。如果您只想将
$string
与$string2
的第一个值(逗号之前)进行比较,则需要调整此比较。To get the first value before the comma, you can use the
cut
command.With the following code
you compare the complete lines. If you want to compare
$string
with only the first value (before the comma) of$string2
, you need to adjust this comparison.