ファイルの特定の列に特定の行を表示する方法

ファイルの特定の列に特定の行を表示する方法

まず、awk、sed、perl を使用できません。

私の仕事のために従業員リストファイルを受け取りました。

Marketing  Ranjit Singh   FULLEagles       Dean Johnson   
Marketing  Ken Whillans   FULLEagles       Karen Thompson 
Sales      Peter RobertsonPARTGolden TigersRich Gardener  
President  Sandeep Jain   CONTWimps        Ken Whillans   
Operations John Thompson  PARTHawks        Cher           
Operations Cher           CONTVegans       Karen Patel    
Sales      John Jacobs    FULLHawks        Davinder Singh 
Finance    Dean Johnson   FULLVegans       Sandeep Jain   
EngineeringKaren Thompson PARTVegans       John Thompson  
IT         Rich Gardener  FULLGolden TigersPeter Robertson
IT         Karen Patel    FULLWimps        Ranjit Singh   

簡単に言うと、ユーザーに名前または名前の一部を入力するように求められ、2番目の「列」でのみその単語が検索されます。そこで見つかった場合、ユーザーは、その人のチーム名(3番目の列、「部分」、または「全体」の横にある単語など)が欲しいのか、その人のパートナー(最後の列)が欲しいのかを尋ねます。

最終結果には、チーム名またはパートナーの横にフルネームが表示されます。

最後のステップは不明です。元の検索に一致する行だけを切り取り、必要な「列」のみを表示します。

while :
do
    echo Enter the name of the player you want to search for:
    read name
    if (cut -c12-26 emplist | grep -n ${name} > namefile)
    then
        while :
        do
            echo 'See partner (P/p) or team name (T/t)?'
            read answer
            if [ ${answer} = "T" -o ${answer} = "t" ]
            then
                **#Steps for showing only the full name and the team name** 
                break
            elif [ ${answer} = "P" -o ${answer} = "p" ]
            then
                **#Steps for showing only the full name and the partner name**
                break
            else
                echo Please enter only T or M.
            fi
            done
    elif [ ${name} = "ZZZ" ]
    then
        break
    else
        echo Name not found.
    fi
done

ベストアンサー1

次のことができます(検索Johnと報告のためにここ)チーム):

$ cut -c12-26 <emplist | paste -d: - emplist | grep '^[^:]*John' | cut -c1-16,47-59
John Thompson  :Hawks
John Jacobs    :Hawks
Dean Johnson   :Vegans

おすすめ記事