我是bash的新手,我有一个包含一些字符串记录的文件,比方说
1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
Run Code Online (Sandbox Code Playgroud)
我需要制作另一个如下所示的文件:
2 4 5 3 1
7 9 10 8 6
...
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个:
2 4 5
3 1
7 9 10
8 6
Run Code Online (Sandbox Code Playgroud)
该问题可能是由于以下事实造成的:在行的末尾没有定界符,并且在打印时需要输入Enter,但是我不知道该如何解决。
#!/bin/bash
FILE=file.txt
a=$(cut -d',' -f2 $FILE)
b=$(cut -d',' -f4 $FILE)
c=$(cut -d',' -f5 $FILE)
d=$(cut -d',' -f3 $FILE)
e=$(cut -d',' -f1 $FILE)
paste <(echo "$a") <(echo "$b") <(echo "$c") <(echo "$d") <(echo "$e") --delimiters ' '> new.txt
Run Code Online (Sandbox Code Playgroud)
如果您的任务只是更改字段分隔符并重新排列字段,那么将整个文件读入内存的效率非常低。一次只处理一行。
awk -F, '{ print $2, $4, $5, $3, $1 }' file.txt >new.txt
Run Code Online (Sandbox Code Playgroud)
Awk比裸机脚本更适合;也许与cat相比,Bash在读取循环时也非常慢,为什么呢?
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |