假设我有一个包含 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/