我希望将column2
连接到column4
。
示例(first.txt):
|ID|column2|column3|column4|
|1 | a | b | c |
|2 | d | e | f |
到此(mynewfile.txt):
ID|column2
1 | a b c
2 | d e f
这是我在cygwin中的脚本:$ awk '{print $2" "$3" "$4 }' first.txt > mynewfile.txt
当然,它运作得不好..如何改进脚本?
答案 0 :(得分:1)
您需要设置字段分隔符,以便围绕它的可选空格的管道是字段分隔符。
该行开头的管道在管道之前导致空字段1,因此ID为字段2,列2-4为字段3-5。所以它应该是:
awk -F' *\\| *' 'NR == 1 {print "ID|column2|"} NR > 1 {printf("%d | %s %s %s |\n", $2, $3, $4, $5)}' first.txt > mynewfile.txt
答案 1 :(得分:0)
不是特别通用的 GNU sed
方法:
sed 's/^[|]//;1s/2.*/2/;1!{s/|/ /g2;s/ */ /2g}' first.txt
输出:
ID|column2
1 | a b c
2 | d e f