awk 抓取最后一个条目和所有数据,直到文件末尾(包括 null )
awk grabbing last entry and all data until the end of a file ( including null )
我正在使用 awk 读取文件并获取从最后一个条目到文件末尾的所有内容。
awk '/^[(]/{s="";} {s=s"\n"[=10=];} END{print substr(s,2);}' file_one > file_two
我遇到的问题是,当条目具有 NULL 值时,它仅 returns (
。是否有一个标志可以抓取空数据直到文件末尾?我怎样才能准确地得到那些数据?
您可以为此使用 perl:
创建一个包含空值的文件
$ printf '}if\n\n([=10=][=10=][=10=]hello world[=10=]\nfoo\nbar\n' > file
$ od -c file
0000000 } i f \n \n ( [=10=] [=10=] [=10=] h e l l o w
0000020 o r l d [=10=] \n f o o \n b a r \n
0000036
提取最后一个(
之后的东西
$ perl -0777 -F'\(' -ane 'print $F[-1]' file
hello world
foo
bar
$ perl -0777 -F'\(' -ane 'print $F[-1]' file | od -c
0000000 [=11=] [=11=] [=11=] h e l l o w o r l d [=11=] \n
0000020 f o o \n b a r \n
0000030
备注
- 选项
-0777 -n
会将整个文件读入一个字符串
- 选项
-F'\(' -a
会将字符串拆分为数组@F
,使用(
作为分隔符
$F[-1]
是数组的最后一个元素。
我正在使用 awk 读取文件并获取从最后一个条目到文件末尾的所有内容。
awk '/^[(]/{s="";} {s=s"\n"[=10=];} END{print substr(s,2);}' file_one > file_two
我遇到的问题是,当条目具有 NULL 值时,它仅 returns (
。是否有一个标志可以抓取空数据直到文件末尾?我怎样才能准确地得到那些数据?
您可以为此使用 perl:
创建一个包含空值的文件
$ printf '}if\n\n([=10=][=10=][=10=]hello world[=10=]\nfoo\nbar\n' > file $ od -c file 0000000 } i f \n \n ( [=10=] [=10=] [=10=] h e l l o w 0000020 o r l d [=10=] \n f o o \n b a r \n 0000036
提取最后一个
之后的东西(
$ perl -0777 -F'\(' -ane 'print $F[-1]' file hello world foo bar $ perl -0777 -F'\(' -ane 'print $F[-1]' file | od -c 0000000 [=11=] [=11=] [=11=] h e l l o w o r l d [=11=] \n 0000020 f o o \n b a r \n 0000030
备注
- 选项
-0777 -n
会将整个文件读入一个字符串 - 选项
-F'\(' -a
会将字符串拆分为数组@F
,使用(
作为分隔符 $F[-1]
是数组的最后一个元素。