我有文本文件:
# How often update data
period=30
#For Location
location=London.uk
我想在stdout上打印:
London.uk
当我使用sed s/".*location="/""/ "$file_name"
它的工作正确。但是没有选项-z
我有以下信息:
# How often update data period=30 #For Location London.uk
如何在没有location
的情况下打印-z
?
答案 0 :(得分:1)
尝试关注sed
sed -n 's/^location=//p' "$file_name"
我更喜欢使用grep
grep -oP '^location=\K.*' "$file_name"
答案 1 :(得分:1)
您也可以使用perl:
perl -lne 'print $1 if(/^location=(.*)/)' your_file
如果你坚持使用sed,那么你可以选择:
sed -n 's/^location=\(.*\)/\1/p' your_file
答案 2 :(得分:1)
我不知道-z
选项是什么,我的手册页不知道它。但是从您的描述中读取,它与-n
选项相同,即不打印读取行。如果您想要一个没有-n
的解决方案,可以尝试
sed '/^location/!d; s/^location=//' "$file_name"
删除所有不以location
开头的行,然后删除以location
开头的行,location=
将被删除。
仍然是您不想使用-n
选项的问题。
答案 3 :(得分:1)
如果您想尝试awk
awk -F= '/^location/ {print $2}' "$file_name"
London.uk