【发布时间】:2021-07-13 14:58:43
【问题描述】:
我有 9 个不同的文件,我循环遍历每个文件,并取第一行、第二行和第三行。
这是我的代码:
if [ -f displayStudentsInfo.txt ];
then
rm displayStudentsInfo.txt
fi
for f in 20*.txt
do
sed -n '1p' "$f" | cut -d' ' -f3 > anyfile.txt
sed -n '2p' "$f" | cut -d' ' -f2 >> anyfile.txt
sed -n '3p' "$f" | cut -d' ' -f2- >> anyfile.txt
sed -E '$!s/\r?$/, /' anyfile.txt | tr -d \\r\\n >> displayStudentsInfo.txt
done
cat displayStudentsInfo.txt
rm anyfile.txt
我已经使用此命令将每个文件添加到一行,但不幸的是,所有文件都添加到同一行。
sed -E '$!s/\r?$/, /' anyfile.txt | tr -d \\r\\n
输出:
201664003, 2.8, Mathematics201700128, 3.2, Pharmacy201703451, 2.2, Political Science201759284, 3.4, Marketing201800082, 3.3, Information Technology Management201800461, 2.7, Information Technology Management201800571, 2.7, Information Technology Management201804959, 3.4, Computer Science201806050, 3.5, Computer Science201806715, 3, Computer Science201942365, 3.6, Computer Science
【问题讨论】:
-
od -c display.txt会更直接一些 -
@markp-fuso 我要求这个输出,因为它可以很容易地使用
printf $(tr -d \\n | sed 's/ /\\x/')反转。od -c更容易检查,但是变成一个可以测试命令的实际文件很痛苦。