我有一个家庭作业,这就是问题所在。
使用awk创建一个命令,用于显示特定文件的每个字段。
在文件开头显示日期,并在输出的开头加上一行和标题。
我已经读过这本书,但不太明白,下面是我的内容:
BEGIN {
{"date" | getline d }
{ printf "\t %s\n,d }
{ print "Heading\n" }
{ print "=====================\n }
}
{ code to display each field of file??? }发布于 2011-04-26 01:13:22
关于awk的一些提示:
awk程序的格式为
expression { action; ... }
expression { action; ... }
...如果表达式的计算结果为true,则执行动作块。表达式的一些示例:
BEGIN # true before any lines of input are read
END # true after the last line of input has been read
/pattern/ # true if the current line matches the pattern
NR < 10 # true if the current line number is less than 10如果您希望在每一行上执行操作,则可以省略该表达式。
所以,你的BEGIN块有太多的花括号:
BEGIN {
"date" | getline d
printf("\t %s\n\n",d)
print "Heading"
print "====================="
}你也可以写成
BEGIN {
system("date")
print ""
print "Heading"
print "====================="
}或者在awk外部执行date命令,并将结果作为awk变量传入
awk -v d="$(date)" '
BEGIN {
printf("%s\n\n%s\n%s\n",
d,
"heading",
"======")
}打印命令隐式地在输出中添加一个新行,因此print "foo\n"; print "bar"将在"foo“之后打印一个空行。printf命令要求您在格式字符串中添加换行符。
我不能为你提供更多关于“打印每个字段的代码”。Luuk显示print $0将打印所有字段。如果这不能满足您的需求,则必须更具体。
发布于 2011-04-26 00:55:29
{"date" | getline d }为什么不简单地打印当前日期{ print strftime(“%y-%m-%d%H:%M”);}
以及:
{ code to display each field of file??? }简单地做
{ print $0; }如果你只想要第一个字段,你应该这样做:
{ print $1; }如果您只需要第二个字段:
{print $2; }如果只想要最后一个字段:
{print $NF;}因为NF是一行上域的个数......
https://stackoverflow.com/questions/5780596
复制相似问题