需要关于awk的帮助
要忽略前导空格和尾随空格以及空白行和注释行(如果有文件
)答案 0 :(得分:0)
你走了,
grep "MyText" FromMyLog.log |awk -F " " '{print $2}'|awk -F "#" '{print $1}'
此处 MyText 是从文件 FromMyLog.log
获取grep的关键-F 用于避免以下值,此处为引号之间的空格。
' {print $ 2}' 将从输出中打印第二个参数,您可以使用$ 1,$ 2作为您的要求。
awk -F"#" 这会忽略评论的行。
这只是一个提示,根据您的要求修改代码。这对grep来说适用于我。
grep -v '^$\|^\s*\#' <filename>
或egrep -v '^[[:space:]]*$|^ *#' <file_name>
(如果是空格)
答案 1 :(得分:0)
我认为这就是你要求的:
$> echo -e ' abc \t
\t efg
# alskdjfl
#
awk
# askdfh
' |
awk '
# match if first none space character is not a hash sign
/^[[:space:]]*[^#]/ {
# delete any spaces from start and end of line
sub(/^[[:space:]]*/, "");
sub(/[[:space:]]*$/, "", NF); # `NF` is Number of Fields
print
}'
abc
efg
awk
如果需要,可将其折叠成一行。任何问题,输入的实际示例(在您的问题的代码块中)都会有所帮助。
答案 2 :(得分:0)
这是提取忽略空格所需内容的一种方法
文件内容
Server: 192.168.XX.XX
Address 1: 192.168.YY.YY
Name: central.google.com
现在提取没有空格的服务器地址。
<强> COMMAND 强>
awk -F':' '/Server/ '{print $2}' YOURFILENAME | tr -s " "
选项 - 用于挤压重复空格。
给出,
192.168.XX.XX
请注意,地址中有一个前导空格。
要完全忽略空格,您可以将其更改为,
awk -F':' '/Server/ '{print $2}' YOURFILENAME | tr -d [:space:]
选项-d用于删除特定字符,这里是[:space:]。
给出,
192.168.YY.YY
没有任何前导或尾随空格。
tr 是一个用于翻译,删除或挤压重复字符的UNIX实用程序。 tr 指的是在这里翻译。
<强>示例:强>
tr [:lower:] [:upper:]
给出,
YOUAREAWESOME
的
youareawesome
希望有所帮助。