假设我有一个变量$ str1
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|
我不知道这是否重要,但这是我使用的实际代码片段:
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|
意味着它真的不在文件中。 HAAA!我好像一团糟! -_-
答案 0 :(得分:0)
使用grep
此处的使用详情:http://unixhelp.ed.ac.uk/CGI/man-cgi?grep 或检查手册页运行>男人从外壳grep
假设您的数据位于名为test_file.txt
的文件中的示例grep "20140121-21:48:26|Joanne Frances|" test_file.txt
答案 1 :(得分:0)
您熟悉grep
吗?它是专门为此目的而设计的工具,也非常强大。
为您提供最基本用法的简单介绍:grep <pattern> <file>
(如果您坚持使用管道,则为cat <file> | grep <pattern>
)。在您的示例中,grep "20140121-21:48:26|Joanne Frances|" foo
假设foo
是文件的名称。这产生了你想要的 - 包含模式的一行。
答案 2 :(得分:0)
适合我:
$ 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|
$