给出一个文件input.csv,如下所示,
EMP_ID,EMP_NAME,JOINING_DATE,SALARY
1,T Natarajan,22-APR-2024,6000000
2,Velmurugan,22-JUL-2024,2000000
3,Rowin,21-OCT-2024,5000000
#END_OF_FILE
如何在除第一行和以井号 (#) 开头的行之外的所有行中添加前缀“E_”。预期输出是,
EMP_ID,EMP_NAME,JOINING_DATE,SALARY
E_1,T Natarajan,22-APR-2024,6000000
E_2,Velmurugan,22-JUL-2024,2000000
E_3,Rowin,21-OCT-2024,5000000
#END_OF_FILE
尝试过这个命令
sed -i -E '/^(#)/! s/^/E_/' input.csv
,但它也在更新第一行。
您没有执行任何操作来排除第一行。
您可以用大括号组合两个条件:
sed '/^#/!{;1!s/^/E_/;}' input.csv
或者您可以扭转逻辑以跳过这些行;
sed '/^#/b;1b;s/^/E_/' input.csv
(
b
命令表示“跳转到脚本中的这一点”;如果没有标签,它会跳转到末尾,跳过当前输入行的脚本的其余部分。)
我拿出了
-i
选项;一旦您对结果符合您的期望感到满意,就把它放回去。
此外,括号没有任何作用,所以我也删除了它们。这样,脚本就不再使用任何 ERE 语法,因此我也删除了
-E
选项。