awk忽略前导和尾随空格以及空白行和注释行(如果有的话)来自文件

时间:2018-02-12 11:45:32

标签: shell awk

需要关于awk的帮助

要忽略前导空格和尾随空格以及空白行和注释行(如果有文件

3 个答案:

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

希望有所帮助。