如何从某个字段中有尾随空格的文件中过滤记录?例如,如果我有一个包含这些行的文件(|作为字段分隔符):
a232|var1|var2
a342 |var1|var2
a234|var1|var2
过滤应返回一行
a342 |var1|var2
我不想删除这些空格。我试过这个:
awk '$1 ~ /[\s]+$/' myfile.txt
但它不起作用。
答案 0 :(得分:2)
您的行几乎是正确的,但如果不是FS
则需要定义space
,在您的情况下是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
答案 1 :(得分:1)
您可以使用grep
执行此操作:
grep '^[^|]* |'
答案 2 :(得分:1)
试试这个
sed -n 's/\(.*\) |.*/\n&/p'
答案 3 :(得分:0)
像这样使用grep:
grep " |" yourfile
或更常见的
grep "\s|" yourfile
答案 4 :(得分:0)
从您的示例中
a232|var1|var2
a342 |var1|var2
a234|var1|var2
试试这个,
sed -n 2p filename
此处,2p
表示您正在过滤文件的第二行。
如果你想过滤第三行,那么代码将如下所示,
sed -n 3p filename
一般情况下,我们可以说明sed -n Np filename
此处,N
代表您要从给定文件中过滤的行索引。
答案 5 :(得分:0)
sed -n '/\(.*\)[[:blank:]]\|/ p' YourFile
GNU sed的 --posix