繁体   English   中英

使用grep查找一行并从该行只打印2个单词

[英]Using grep to find a line and print only 2 words from that line

我是linux的新手,我决定学习shell脚本。 我创建了一个包含以下文本的文件data.txt:

12345 Nick Abrams A 10900
67890 George Kennedy I 20000
(text goes on...)

第一个字段是卡的密码,第二个是客户的名称,第三个是姓氏,第四个字段表示卡是否处于活动状态(或非活动状态),最后一个字段是客户端的余额。 我需要编写一个从键盘接收客户端引脚的脚本,如果该引脚写在文本文件中,那么脚本应该在屏幕上打印客户端的名称和姓氏。 我用过这样的grep

grep "^$pin" data.txt

但它返回客户端的所有细节。 我只需要打印第二个和第三个字段并忽略其他所有字段。 是否有任何参数可以隔离我需要的单词?

你可以尝试一下,让我知道这是否对你有帮助。

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
#!/bin/bash

echo "Enter PIN, please"
read pin

grep "${pin}" pins.txt | awk '{print $2" "$3}'

输入: 12345

输出: Nick Abrams

或者cut

#!/bin/bash

echo "Enter PIN, please"
read pin

grep "${pin}" pins.txt | cut -d' ' -f2,3

更好用sed:

sed -n 's/^'"$pin \([^ ]* [^ ]*\).*"'/\1/p' data.txt

此命令匹配以$pin开头的行,并且只写在\\(\\)之间的regex后面的部分

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM