假设我有一个有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
Textfile.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;
发布于 2018-07-30 04:20:39
给定:
$ cat file
"text1":"text2":"text3":"text4"
"text1":"text2":"text3":"text4"
"text1":"text2":"text3":"text4"
您可以使用awk
将其转换为列:
$ awk -F: '{for (i=1;i<=NF;i++) print $i>"file" i ".txt"}' file
您可以删除引号字符并使用以下命令添加;
:
awk -F: '{for (i=1;i<=NF;i++) {
gsub(/"/,"",$i)
print $i ";">"file" i ".txt"}}' file
结果:
$ cat file{1..4}.txt
text1;
text1;
text1;
text2;
text2;
text2;
text3;
text3;
text3;
text4;
text4;
text4;
https://stackoverflow.com/questions/51584073
复制相似问题