如何在Unix中使用awk而不使用分隔符从文件中提取字段

End*_*ame 0 unix shell awk ksh separator

我有一个文件调用"文件",其中有一些字段用分隔符分隔.该文件的结构是:

@field1@field2@field3@field4
Run Code Online (Sandbox Code Playgroud)

使用awk我已经提取了没有分隔符的字段.

vr=$file;

sep_mx=`echo $vr | awk '{
    n=split($0,x,"@");
    print n
}'` 
echo $sep_mx
## here the number of substring produced is calc.

while ((i<=$max)); 
do
    # would print individual substring one at a
    # time as the counter increases.
    echo $vr | awk -v er=$i '{
        n=split($0,x,"@"); print x[er]
    }'
    ((i+=1))
done
Run Code Online (Sandbox Code Playgroud)

输出是:

field1
field2
field3
field4
Run Code Online (Sandbox Code Playgroud)

如果我想从代码中仅提取第二个字段,我刚刚发布了如何做到这一点?谢谢

fed*_*qui 5

这应该是:

awk -F@ '{print $3}' file
Run Code Online (Sandbox Code Playgroud)

一般来说,尽量使用-F.它意味着"字段分隔符",让您的生活更轻松,无需分割,子目录和类似的东西.

测试

$ awk -F@ '{print $3}' file
field2
Run Code Online (Sandbox Code Playgroud)

  • 你试过吗?`awk -F"#@"'{print $ 3} file`有效. (2认同)