我如何从某个字段中有一个落后空间的文件中过滤记录?例如,如果我有一个包含这样的行的文件(|作为字段定界符):
a232|var1|var2
a342 |var1|var2
a234|var1|var2
过滤应返回一行
a342 |var1|var2
我不想删除这些白色空间。我尝试了:
awk '$1 ~ /[s]+$/' myfile.txt
但它不起作用。
您的行几乎是正确的,但是如果您不是space
,则需要定义FS
,在您的情况下,它是pipe
:
awk -F| '$1~/[[:space:]]+$/'
您可以将$1
更改为$x
以在"某些"字段上过滤。
测试:
kent$ echo "a232|var1|var2
a342 |var1|var2
a234|var1|var2"|awk -F| '$1~/[[:space:]]+$/'
a342 |var1|var2
您可以使用grep
:
grep '^[^|]* |'
尝试这个
sed -n 's/(.*) |.*/n&/p'
使用这样的grep:
grep " |" yourfile
或更普遍的
grep "s|" yourfile
sed -n '/(.*)[[:blank:]]|/ p' YourFile
--posix
用于gnu sed
从您的示例中,
a232|var1|var2
a342 |var1|var2
a234|var1|var2
尝试这个,
sed -n 2p filename
在这里, 2p
表示您正在从文件中过滤第二行。
如果要过滤第三行,那么代码将看起来像
sed -n 3p filename
通常,我们可以说明sed -n Np filename
在这里,N
代表要从给定文件过滤的行索引。