我是linux的新手,我决定学习shell脚本。我创建了一个包含以下文本的文件data.txt:
12345 Nick Abrams A 10900
67890 George Kennedy I 20000
(text goes on...)
第一个字段是卡的密码,第二个是客户的名称,第三个是姓氏,第四个字段表示卡是否处于活动状态(或非活动状态),最后一个字段是客户端的余额。我需要编写一个从键盘接收客户端引脚的脚本,如果该引脚写在文本文件中,那么脚本应该在屏幕上打印客户端的名称和姓氏。我用过这样的grep
grep "^$pin" data.txt
但它返回客户端的所有细节。我只需要打印第二个和第三个字段并忽略其他所有字段。是否有任何参数可以隔离我需要的单词?
答案 0 :(得分:2)
请您试着跟随并告诉我这是否对您有帮助。
cat script.ksh
echo "Please enter your choice:"
read value
awk -v val="$value" '$1==val{print $2,$3}' Input_file
编辑: 此处在脚本中添加grep
和cut
的解决方案。
cat script.ksh
echo "Please enter your choice:"
read value
grep "$value" Input_file | cut -d" " -f2,3
答案 1 :(得分:1)
hive.merge.smallfiles.avgsize
输入:#!/bin/bash
echo "Enter PIN, please"
read pin
grep "${pin}" pins.txt | awk '{print $2" "$3}'
输出:12345
或Nick Abrams
:
cut
答案 2 :(得分:1)
更好地使用sed:
sed -n 's/^'"$pin \([^ ]* [^ ]*\).*"'/\1/p' data.txt
此命令匹配以$pin
开头的行,并且只写\(
和\)
之间的正则表达式部分