我有一个像这样的数据表
Student|Marks|remarks
------ | --- | ------
a |50 |Need to improve
------ | --- | ------
b |70 |Good performance
------ | --- | ------
当我使用awk '((NR % 2) == 0) {printf "%-10s %-10s %10s\n", $1, $2, $3}' Filename.txt
时,它只考虑上一栏中的需要和好,需要提出建议,因为最后的评论也有不均匀的空格。< / p>
提前致谢
答案 0 :(得分:2)
什么时候使用awk'((NR%2)== 0){printf“%-10s%-10s%10s \ n”,$ 1, $ 2,$ 3}'Filename.txt,它只是考虑了上次的需求和好 专栏,需要就此提出建议,因为最后的评论也有不均衡 空格。
您需要Content="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type chartingToolkit:ColumnSeries}},Path=DataContext.ColumnValues.Legend1, Mode=TwoWay}
或-F'|'
,然后才能处理不均匀的空间,
默认情况下-v FS='|'
使用单个空格作为字段分隔符,因此仅打印最后一列的需要和好。
和
awk
要
((NR % 2) == 0)
所以只会打印奇数行(据我所知不均匀)
(NR % 2)
$ cat infile Student|Marks|remarks ------ | --- | ------ a |50 |Need to improve ------ | --- | ------ b |70 |Good performance ------ | --- | ------ $ awk -F'|' '(NR % 2){printf "%-10s %-10s %10s\n", $1, $2, $3}' infile Student Marks remarks a 50 Need to improve b 70 Good performance
默认行为,即单个空格作为字段分隔符
awk
时的行为方式
$ awk 'NR==3{for(i=1;i<=NF;i++)printf("Column-%d = $%d = %s\n",i,i,$i)}' infile Column-1 = $1 = a Column-2 = $2 = |50 Column-3 = $3 = |Need Column-4 = $4 = to Column-5 = $5 = improve
设置awk
,管道作为字段分隔符
-F'|'
答案 1 :(得分:0)
如果您只想删除“边框”,则无需关心FS
或NR
内容,请尝试使用此sed单行代码:
sed -n 's/|/ /g; /[^- |]/p' file
使用您的测试数据输出:
Student Marks remarks
a 50 Need to improve
b 70 Good performance
现在没有删除边框,但现在我需要选择第3列,但它只选择Need and good - Saurabhdv27
$ awk -F'|' 'NR>1&&$3~/[^ -]/{print $3}' file
Need to improve
Good performance