我有一个以下格式的文件:
Name=Dan
Age=45
Name=Alex
Age=35
Cellphone=12345678901
Name=John
Age=
Cellphone=12345678901
该文件有 1000 个以上格式的数据项Name=Value
。
如果值缺失,我想在下面的输出中找到这些值作为年龄的缺失值。
我尝试使用 cut 命令,cut -d “=“ -f2 > some file
然后 grep 查找空行,grep -n ‘[[:blank:]]’ file
然后显示原始文件中的行号。
但由于我有多个文件,这个方法看起来很复杂。
有没有更简单的方法?
答案1
你可以尝试使用这个:
cat <filename> | sed "s/ /\n/g" | grep "=$"
这会将您的空格替换为新行(如果您的值包含空格,则此方法不起作用),然后查找带有 = 后跟行尾的条目。
答案2
如果您将文件视为分隔的,那么您可以匹配并输出第二个的任何行场地最多由空格组成:
awk -F= '$2 ~ /^[ \t]*$/' file
答案3
与扩展正则表达式一起使用grep
:
grep -Eno "[A-Za-z]+=( |$)" /path/to/file
应打印空键和相应的行号。