linux - 我们如何使用 bash 自动化 Linux cut 命令

标签 linux bash unix

假设我有一个包含 4 列的文本文件,我必须剪切每一列并将其保存到另一个文本文件中。我可以通过以下 Linux 命令手动执行此操作,但我想使用 bash 脚本自动执行此过程。有人可以帮我解决这个问题

cut  textfile.txt | cut -d ":" -f1 > output1.txt

cut  textfile.txt | cut -d ":" -f2 > output2.txt

cut  textfile.txt | cut -d ":" -f3 > output3.txt

cut  textfile.txt | cut -d ":" -f4 > output4.txt

文本文件.txt

"text1":"text2":"text3":"text4"
"text1":"text2":"text3":"text4"
"text1":"text2":"text3":"text4"
"text1":"text2":"text3":"text4"
"text1":"text2":"text3":"text4"
"text1":"text2":"text3":"text4"
"text1":"text2":"text3":"text4"
"text1":"text2":"text3":"text4"
"text1":"text2":"text3":"text4"

第 1 列应存储在 output1.txt 中

text1;
text1;
text1;
text1;
text1;
text1;

第 2 列应存储在 output2.txt 中

text2;
text2;
text2;
text2;
text2;
text2;

第 3 列应存储在 output3.txt 中

text3;
text3;
text3;
text3;
text3;
text3;

第 4 列应存储在 output4.txt 中

text4;
text4;
text4;
text4;
text4;
text4;

最佳答案

这个 awk 单行代码适用于给定的示例输入:

awk -F':' '{for(i=1;i<=NF;i++)print $i>"output"i".txt"}' file

执行此命令后,您将得到结果output1-4.txt。

OP评论:

No of columns are not fixed

如果您的输入文件有很多列,您需要关闭文件并将文本附加到文件中:

awk -F':' '{for(i=1;i<=NF;i++){f="output"i".txt;print $i>>f;close(f)}' file

关于linux - 我们如何使用 bash 自动化 Linux cut 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51584073/

相关文章:

linux - OpenCV 保留 "uninstalling"本身 (Linux)

linux/虚拟/物理页面大小

linux - QEMU-KVM 与 VMWare 使用 GDB 进行内核调试

python - 如何在 Windows 10 上的 VSCode 中激活 conda 环境

unix - 无法构建数组并在 AWK 中打印出来

c++ - 当用户按下 'Ctrl-D' 时,我试图结束我的 C++ 程序

c++ - 套接字很少返回 -1 (errno 97)

linux - 使用 bash 脚本替换配置文件变量

linux - 如何每 20 分钟而不是每小时运行一次 cron

linux - 如何在 linux shell 脚本中比较变量与变量减去常量?