我正在尝试根据第一个替换csv字段的内容。我在sed中尝试了一些东西 - 在另一个帖子中找到了 - 但是我无法获得正确的结果。
示例:
57c5b4da8ef722a0d4b0bbd9727982d2;510;1020;20130410
4858ecf7bf221fd8a3792615d8008dd8;530;4050;20130412
我希望能够根据数字和第一个字段包含“57c5b4da8ef722a0d4b0bbd9727982d2”的位置替换字段内容。
我当前的sed行仅适用于最后一个字段:
sed -i 's/\(57c5b4da8ef722a0d4b0bbd9727982d2\)\(;.*;\).*/\1\220130401/' myfile
答案 0 :(得分:0)
我认为您尝试使用数字;
替换第三个和最后一个字段(如果20130401
是分隔符),
$ sed 's/^\(57c5b4da8ef722a0d4b0bbd9727982d2\)\(;[^;]*;\).*$/\1\220130401/g' file
57c5b4da8ef722a0d4b0bbd9727982d2;510;20130401
4858ecf7bf221fd8a3792615d8008dd8;530;4050;20130412
答案 1 :(得分:0)
这可以吗?
awk -F\; '$1=="57c5b4da8ef722a0d4b0bbd9727982d2" {$NF=220130401}1' OFS=\; file
57c5b4da8ef722a0d4b0bbd9727982d2;510;1020;220130401
4858ecf7bf221fd8a3792615d8008dd8;530;4050;20130412
如果第一个字段为57c5b4da8ef722a0d4b0bbd9727982d2
,则将最后一个字段替换为220130401
答案 2 :(得分:0)
这可能适合你(GNU sed):
sed 's/[^;]*/xxx/2' file
这会将第二个字段替换为xxx
。
如果您想要特定行的第二个字段,请使用:
sed '/57c5b4da8ef722a0d4b0bbd9727982d2/s/[^;]*/2' file