0
我正尝试使用以下命令将日期从格式30 January 2015
转换为30012015
。原始格式存在于文件的偶数行中。我只想改变这条线。有人可以帮助我吗?无法使用awk在linux中编辑文件中的现有日期
awk '{if(NR%2==1){print $0 > "file.txt"}else{print now=$("$0" +%d%m%Y') > "file.txt"}}' file.txt
我正尝试使用以下命令将日期从格式30 January 2015
转换为30012015
。原始格式存在于文件的偶数行中。我只想改变这条线。有人可以帮助我吗?无法使用awk在linux中编辑文件中的现有日期
awk '{if(NR%2==1){print $0 > "file.txt"}else{print now=$("$0" +%d%m%Y') > "file.txt"}}' file.txt
你可以试试,
echo -e "whatever\n30 January 2015" | awk '
BEGIN{
m=split("January|February|March|April|May|June|July|August|September|October|November|December",d,"|");
for(i=1;i<=m;i++) months[d[i]]=i;
}
NR%2 { print; next }
{
printf "%02d%02d%04d\n",$1,months[$2],$3;
}'
你,
whatever 30012015
谢谢....它的工作 – raj
您是从文件中读取,并在同一时间写它 - 更糟糕的是,您可以使用'>'运算符,它在写入文件之前截断文件。您应该使用append运算符('>>')并首先将其写入临时文件,然后用临时文件覆盖原始文件。或者,如果您的'awk(1)'版本支持它,请使用'-i'命令行选项。 –
我尝试了>>,并将事情重定向到新文件,但没有帮助,我得到语法错误。 – raj