gpt4 book ai didi

shell - Unix 剪切 : Print same Field twice

转载 作者:行者123 更新时间:2023-12-04 03:45:10 24 4
gpt4 key购买 nike

说我有文件 - a.csv

ram,33,professional,doc
shaym,23,salaried,eng

现在我需要这个输出(请不要问我为什么)
ram,doc,doc,
shayam,eng,eng,

我正在使用 cut 命令
cut -d',' -f1,4,4 a.csv

但输出仍然存在
ram,doc
shyam,eng

这意味着 只能打印 一次字段 .我需要打印相同的字段两次或 n 次。
为什么我需要这个? (可选阅读)
啊。说来话长。我有一个这样的文件
#,#,-,-
#,#,#,#,#,#,#,-
#,#,#,-

我必须把这个隐藏起来
#,#,-,-,-,-,-
#,#,#,#,#,#,#,-
#,#,#,-,-,-,-

这里每个“#”和“-”指的是不同的数字数据。谢谢。

最佳答案

您不能两次打印同一个字段。 cut按顺序打印字段(或字符或字节)的选择。见 Combining 2 different cut outputs in a single command?Reorder fields/characters with cut command对于一些非常相似的请求。

如果您的 CSV 在字段周围没有引号,那么在这里使用的正确工具是 awk。

awk -F , -v OFS=, '{print $1, $4, $4}'

如果你不想使用 awk(为什么?什么奇怪的系统有 cutsed 但没有 awk ?),你可以使用 sed(仍然假设你的 CSV 没有在字段周围加上引号)。匹配前四个以逗号分隔的字段,然后按所需顺序选择所需字段。
sed -e 's/^\([^,]*\),\([^,]*\),\([^,]*\),\([^,]*\)/\1,\4,\4/'

关于shell - Unix 剪切 : Print same Field twice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12405119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com