【问题标题】:Remove column using awk使用 awk 删除列
【发布时间】:2017-07-23 05:47:25
【问题描述】:

我想删除列,

这是我的命令:

awk -F"|" -v OFS="|" '{ $1=$2=$3"" ; $0=substr($0,37) } 1' PURCHASE_testing.csv > testing.csv

我的意见:

Account num|Car|Type|Name|Class|Price
xxxxxxxxxx |A  |Honda| Fara |A|rm20k
xxxxxxxxxx | B | Proton|Afiq |B|rm40k

我设法删除了第 1 行中的前 3 列,但第 2 行和第 3 行中的字符串无法删除。

我的输出:

       Name      Class      Price              
0101   Fara       A          rm2
1234   Afiq       B          rm4

我希望输出是:

Name Class Price
Fara   A   rm2
Afiq   B   rm4

【问题讨论】:

  • 你真的需要提供输入
  • 已编辑@Gene
  • 我在您的输入中没有看到| 分隔符(根据-F"|"
  • @RomanPerekhrest 拥有它但忘记放..我为你编辑回来

标签: unix awk split


【解决方案1】:

要打印除前 3 列之外的所有列,请使用以下方法:

对于输入PURCHASE_testing.csv文件内容:

Account num|Car|Type|Name|Class|Price 
0101 |A |Honda| Fara |A|rm20k 
1234 |B | Proton|Afiq |B|rm40k

awk -F"|" '{$1=$2=$3=""; print $0}' PURCHASE_testing.csv > testing.csv

现在,testing.csv 文件内容应如下所示:

Name Class Price 
 Fara  A rm20k 
Afiq  B rm40k

【讨论】:

  • 打印所有但不是前三列:) @RomanPerekhrest
  • @Jiji,就英语语法而言,短语To print all but first 3 columns也是正确的
  • 如果我的完整命令是这样的? awk -v date="$(date +"%d%m%Y")" -F\| 'NR==1 {h=$0;下一个} {file="SAMPLE_"$1""$2""date".csv"; print (a[file]++?"": "DETAIL "date"" ORS h ORS) $0 > file} END{for(file in a) print "EOF" a[file] > file}' HIRE_PURCHASE_testing.csv ,如何添加以下命令? @RomanPerekhrest
  • @Jiji,至于你的新命令,为了帮助你,我应该看到HIRE_PURCHASE_testing.csv文件的内容和预期的输出
  • 对不起。我的输入文件是 PURCHASE_testing.csv,我的输出应该是 testing.csv。我现在的命令是 awk -v date="$(date +"%d%m%Y")" -F\| 'NR==1 {h=$0;下一个} {file="testing_"$1""$2""date".csv"; print (a[file]++?"": "DETAIL "date"" ORS h ORS) $0 > file} END{for(file in a) print "EOF" a[file] > file}' PURCHASE_testing.csv 如何添加 awk -F"|" '{$1=$2=$3="";在我当前的命令中打印 $0}' PURCHASE_testing.csv > testing.csv?我想添加命令@RomanPerekhrest
【解决方案2】:

试试这个 -

awk 'BEGIN{FS="|"} {print $4,$5,substr($6,1,4)}' f
Name Class Pric
Fara  A rm20
Afiq  B rm40

解释:substr($6,1,4) 从第 6 列获取 1 到 4 个字符。

【讨论】:

  • 虽然欢迎使用此代码 sn-p,并且可能会提供一些帮助,但它会是 greatly improved if it included an explanation of howwhy 这解决了问题。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人!请edit您的答案添加解释,并说明适用的限制和假设。
猜你喜欢
  • 2017-07-21
  • 2013-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多