gpt4 book ai didi

linux - 在 bash 中读取和比较 .txt 文件中的列

转载 作者:太空宇宙 更新时间:2023-11-04 10:29:56 25 4
gpt4 key购买 nike

我得到了.txt文件,它的内容是

5742060626,Ms.Pimpan Tantivaravong,女

5742065826,Ms.Kaotip Tanti,女

-我创建了一个接口(interface)脚本来在这个文件中添加列表首先,我必须将输入 id 与列表中的 exitsting id 进行比较。我使用 cut 命令只读取 .txt 文件的第一列。但是,当我尝试比较它时遇到了问题。

这是我的代码。

-

!/bin/bash
#
datafile='student-2603385.txt'

while read p;
do

if [ "$id" == (echo $p | cut -d, -f1) ]

then
echo 'duplicate id'

fi
done <$datafile

-

谁能建议我,我该怎么办?谢谢

最佳答案

你的脚本有很多引用错误,当变量包含文件名时总是引用变量扩展,当你想避免 shell 的分词和路径名扩展时,这也是预期的。

暂且不谈,在 if [ "$id"== (echo $p | cut -d, -f1) ] 中:

  • 你需要命令替换,$() around echo ... | cut ...,不是子shell ()

  • 您还需要在 $() 周围加上引号,以防止分词(和路径名扩展)

  • == 是 bash-ism,不是 POSIX 定义的,只是提醒一下

  • 尽量使用[[,作为shell关键字[[处理分词

测试 ([):

if [ "$id" == "$(echo "$p" | cut -d, -f1)" ]

更好:

if [[ $id == $(echo "$p" | cut -d, -f1) ]]

关于linux - 在 bash 中读取和比较 .txt 文件中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40445867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com