我试图找出一种从文件中提取数据并以正确的格式输出的工作方法。
假设我有一个名为 data.txt 的文件,它看起来如下:
abc 123
def 456
然后我想使用脚本来解析数据并将其呈现如下:
first abc second 123
third def fourth 456
到目前为止我已经创建了这个:
#!/bin/sh
#
for i in data.txt; do while read -r a b; do
echo "First $a second $b"
echo "third $a fourth $b"
done < data.txt
done
输出如下所示:
First abc second 123
third abc fourth 123
First def second 456
third def fourth 456
因此,它不是读取每一行并应用一次并移至 data.txt 中的下一行,而是不断将相同的数据应用于下一个 echo 命令,然后移至下一行。我知道我可能忽略了一些简单的事情,但这真是漫长的一天。 :)
答案1
您可以在一个循环中执行两次读取
#!/bin/sh
while read -r a b && read -r c d; do
echo "First $a second $b"
echo "third $c fourth $d"
done < data.txt
根据您的实际应用程序,您可能还想查看xargs
ex.
xargs -L2 /bin/printf 'First %s second %s\nthird %s fourth %s\n' < data.txt