在文件中搜索字符串的一部分



>假设我有一个变量 $str 1

str1="20140121-21:48:26|Joanne Frances|"

我想做的是在文件中搜索该部分。例如,该文件包含:

20140121-21:48:26|Joanne Frances|Perez|9173046751.000000|Mar 31|
20140121-21:50:28|Nikko|Real|9065887272.000000|Mar 21|
20140121-22:22:53|Czarina|Revilla|9999999999.000000|Jan 21|

输出应为:

20140121-21:48:26|Joanne Frances|Perez|9173046751.000000|Mar 31|

我不知道这是否重要,但这是我正在使用 yad 的实际代码片段:

selected=$(yad --title=Contacts --width=200 --height=200 
--button=DISPLAY:2 --list 
--separator="|" --column=ID:NUM --column=List 
"${items[@]}" --hide-column=1 --button=ADD:10 )
req=$?
#BUTTON HANDLER:
if [ $req = 10 ]; then
formdata=$(yad --title="Add Contact"   
--form --field="FIRST NAME" --separator="|"   
--field="LAST NAME"   
--field="CONTACT #:NUM"   
--field="Birthday (Mon Day):DT"  --date-format="%b %d" 
"" "" "!09000000000..09999999999!11."
)
echo "$contactid|$formdata" >> contactlist.txt
elif [ $req = 2 ]; then
grep "$selected" contactlist.txt #This is my problem
fi

它不输出任何内容

更新: 最后知道试图echo $selected的问题到底是什么,它输出20140121|Adrian Perez|这意味着它真的不在文件中。哈哈!我真是一团糟!-_-

你熟悉grep吗?它是专门为此类目的而设计的工具,并且功能强大。

为您提供最基本的用法的简单介绍:grep <pattern> <file>(如果您坚持使用管道,则cat <file> | grep <pattern>)。在您的示例中,假设foo是文件名,这将grep "20140121-21:48:26|Joanne Frances|" foo。这完全可以生成您想要的 - 一条包含模式的线。

使用 grep

有关使用的详细信息,请参阅此处:http://unixhelp.ed.ac.uk/CGI/man-cgi?grep 或者检查手册页运行> man grep 从 shell

假设您的数据位于名为 test_file.txt 的文件中的示例

grep "20140121-21:48:26|Joanne Frances|" test_file.txt

对我有用:

$ cat contactlist.txt 
20140121-21:48:26|Joanne Frances|Perez|9173046751.000000|Mar 31|
20140121-21:50:28|Nikko|Real|9065887272.000000|Mar 21|
20140121-22:22:53|Czarina|Revilla|9999999999.000000|Jan 21|
$ echo $str1
20140121-21:48:26|Joanne Frances|
$ grep "$str1" contactlist.txt 
20140121-21:48:26|Joanne Frances|Perez|9173046751.000000|Mar 31|
$ 

相关内容

  • 没有找到相关文章

最新更新