根据以下脚本:
EmpID:Name:Designation:UnitName:Location:DateofJoining:Salary
1001:Thomson:SE:IVS:Mumbai:10-Feb-1999:60000
1002:Johnson:TE::Bangalore:18-Jun-2000:50000
1003:Jackson:DM:IMS:Hyderabad:23-Apr-1985:90000
1004:BobGL::ETA:Mumbai:05-Jan-2004:55000
1005:Alice:PA:::26-Aug-2014:25000
1006:LilySE::IVS:Bangalore:17-Dec-2015:40000
1007:Kirsten:PM:IMS:Mumbai:26-Aug-2014:45000
1004:BobGL::ETA:Mumbai:05-Jan-2021:55000
我正在尝试获取以 S 开头的第 4 字段 (UnitName) 中的字符。我正在尝试此代码,但没有任何反应:
cat file.txt | sort -t ':' -rk4 | grep -i '^S[A-Za-z]\+s\b'
我需要帮助。如果上面的脚本有误,请告诉我。非常感谢
这似乎是 的工作
awk
。以下命令应该可以完成您需要的操作:它告诉
awk
我们::
字段分隔符$4
开头或结尾,则整行S
/^S|S$/
print
如果您只想打印字段编号 4,请使用
print $4
而不是print
。您的原始脚本存在以下问题:
sort -t ':' -rk4
。它只是重新排序文件中的行。grep -i '^S[A-Za-z]\+s\b'
表示整行应以 开头S
,后跟仅字母,后跟S
,后跟单词边界。您的行均不符合此模式,因此不会显示任何内容。