即使使用 'd' 标志,sed 也不会删除行
sed not deleting the lines even with the 'd' flag
我正在尝试从一个 csv 文件中删除所有的复制品:
awk -F ',' '{print }' file.csv | sort | uniq -d | xargs -I{} zsh -c "ggrep -n {} file.csv | tail +2 | awk -F':' '{print $1}' | xargs -I% gsed '%d' file.csv"
我正在使用 d 标志删除行,但它只是将所有行打印到 STDOUT。可能是什么原因造成的?
由于你使用的是 Zsh,如果你想消除文件中的重复行,你可以这样做:
print -l ${(fu)"$( < file.csv )"} > file.csv
< ...
输出文件内容。
$( ... )
将输出捕获到一个字符串中。
"$( ... )
确保保留换行符。
${(f)...}
在换行处拆分字符串并将其转换为数组。
${(u)...}
删除数组中的重复项。
print -l
在单独的行上打印数组中的每个条目。
> file.csv
将输出重定向回文件。
Zsh 手册中的更多信息:
我正在尝试从一个 csv 文件中删除所有的复制品:
awk -F ',' '{print }' file.csv | sort | uniq -d | xargs -I{} zsh -c "ggrep -n {} file.csv | tail +2 | awk -F':' '{print $1}' | xargs -I% gsed '%d' file.csv"
我正在使用 d 标志删除行,但它只是将所有行打印到 STDOUT。可能是什么原因造成的?
由于你使用的是 Zsh,如果你想消除文件中的重复行,你可以这样做:
print -l ${(fu)"$( < file.csv )"} > file.csv
< ...
输出文件内容。$( ... )
将输出捕获到一个字符串中。"$( ... )
确保保留换行符。${(f)...}
在换行处拆分字符串并将其转换为数组。${(u)...}
删除数组中的重复项。print -l
在单独的行上打印数组中的每个条目。> file.csv
将输出重定向回文件。
Zsh 手册中的更多信息: