Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix awk或sed,以更合适的为准_Unix_Awk - Fatal编程技术网

Unix awk或sed,以更合适的为准

Unix awk或sed,以更合适的为准,unix,awk,Unix,Awk,在unix中读取csv文件,并对某些列进行替换。与第二列(字符串类型)类似,第二列(字符串类型)应替换为值(第二列本身+第一列(整数)的值),然后第五列替换为$5+4,依此类推。 下面是示例I/O。第一行描述必须保持原样 样本输入 EmpID|Empname|Empadd|roleId|roleDesc|Dept 100|mst|Del|20|SD|DA 101|ms|Del|21|XS|DA 样本输出 EmpID|Empname|Empadd|roleId|roleDesc|Dept

在unix中读取csv文件,并对某些列进行替换。与第二列(字符串类型)类似,第二列(字符串类型)应替换为值(第二列本身+第一列(整数)的值),然后第五列替换为$5+4,依此类推。 下面是示例I/O。第一行描述必须保持原样

样本输入

EmpID|Empname|Empadd|roleId|roleDesc|Dept 
100|mst|Del|20|SD|DA 
101|ms|Del|21|XS|DA
样本输出

EmpID|Empname|Empadd|roleId|roleDesc|Dept 
100|mst100|Del|20|SD20|DA
101|ms101|Del|21|XS21|DA

empname已与empid连接起来&角色描述与角色ID连接起来。

您几乎完全正确,这是有效的:

$ awk 'BEGIN{FS=OFS="|"} (NR>1) {$2=$2 "" $1; $5=$5 "" $4} {print}' <<EOF                                           
EmpID|Empname|Empadd|roleId|roleDesc|Dept
100|mst|Del|20|SD|DA
101|ms|Del|21|XS|DA
EOF
=>
  EmpID|Empname|Empadd|roleId|roleDesc|Dept 
  100|mst100|Del|20|SD20|DA 
  101|ms101|Del|21|XS21|DA

$awk'BEGIN{FS=OFS=“|”}(NR>1){$2=$2”“$1;$5=$5”“$4}{print}
awk
非常适合这项任务。显示您尝试过的
awk
脚本…
希望对您有帮助:)
用于作业?awk'NR>1,FS=OFS=“|”{$2=$2$1;$5=$5$4;print}'file.csv>file.csv我必须提到,我是unix的新手&这是我第一次尝试与awk@devnull:我的意思是,对于示例数据来说,已经整整一个小时了,没有人开过一个
apt
玩笑。同样的事情也适用于.dat文件吗?如果.dat文件是指某种二进制格式,否。原因是awk严格以行和列为导向,即其中必须有
\n
,以便awk可以一次聚焦一行,然后使用
FS
(字段分隔符)将该行拆分为列,无需二进制格式,数据模式与上述csv格式完全相似file@hroptatyrawk是面向记录的,而不是面向行的。您的文件中不需要
\n
s-只要为分隔您的记录的任何内容适当地设置
RS
。@mst UNIX工具绝对不会注意像
.csv
.dat
这样的文件扩展名,并且将没有扩展名的文件与有扩展名的文件完全相同。UNIX工具假定您知道自己在做什么,并对设计用于处理的文件内容调用它们。有一些UNIX工具可以分析文件内容,以确定它们是什么(例如,
man file
),如果您需要了解文件中的内容类型。
> awk -F"|" -v OFS="|" 'NR!=1{$2=$1$2&&$5=$5$4}1' temp
EmpID|Empname|Empadd|roleId|roleDesc|Dept
100|1|Del|20|SD20|DA
101|1|Del|21|XS21|DA
>