[英]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.