如何在某个字段中滤波行的位置

  • 本文关键字:位置 字段 linux bash sed awk grep
  • 更新时间 :
  • 英文 :


我如何从某个字段中有一个落后空间的文件中过滤记录?例如,如果我有一个包含这样的行的文件(|作为字段定界符):

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代表要从给定文件过滤的行索引。

相关内容

  • 没有找到相关文章

最新更新