Linux终端中的相同命令执行不同的事情

Linux终端中的相同命令执行不同的事情

我想创建一个较小的版本;

例子

PRODUCTID   PRODUCTNDC  NDCPACKAGECODE  PACKAGEDESCRIPTION  STARTMARKETINGDATE  ENDMARKETINGDATE    NDC_EXCLUDE_FLAG    SAMPLE_PACKAGE
0002-0800_b02ed630-6947-431a-a8c8-227571403941  0002-0800   0002-0800-01    1 VIAL in 1 CARTON (0002-0800-01)  > 10 mL in 1 VIAL    19870710        N   N

进入

b02ed630-6947-431a-a8c8-227571403941    0002-0800-01    1 VIAL in 1 CARTON (0002-0800-01)  > 10 mL in 1 VIAL    19870710        N   N

我使用命令

 sed 's/^\([^_]*\)_\([^  ]*\)    \([^    ]*\)    \([^(]*\)[(][^)]*[)]/\2\t\4/' package.txt

我从历史记录中进行检查,因为我之前输入了相同的内容,当我复制粘贴它时,它与我使用历史记录中的相同命令时不同。知道如何解决这个问题吗?

答案1

我倾向于用awk这个

  • 消除PRODUCTNDC
  • PRODUCTNDC从开头剥离PRODUCTID
  • 删除标题行
  • 假设制表符分隔的字段

所以,

awk -F'\t' 'NR>1 { OFS=FS; $1=substr($1,length($2)+2,length($1)); $2=$3; $3=$4; $4=$5; $5=$6; $6=$7; $7=$8; NF--; print }'

输出

b02ed630-6947-431a-a8c8-227571403941    0002-0800-01    1 VIAL in 1 CARTON (0002-0800-01) > 10 mL in 1 VIAL     19870710                N       N

相关内容