替换sed“z” - 行解析

时间:2013-11-19 12:17:41

标签: linux shell sed

我有文本文件:

# 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

4 个答案:

答案 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