简单的bash脚本 - 连接字符串

时间:2013-01-05 19:11:43

标签: string macos bash loops for-loop

我正在学习bash脚本,我写了这个简单的脚本:

#!/bin/bash
for f in $(cat test.csv | cut -d';' -f 4)
do
EXT=".pdf"
echo "$f$EXT"
done

文件test.csv是:

col1;col2;col3;test1
col1;col2;col3;test2
col1;col2;col3;test3
...

此脚本的输出是:

.pdf
.pdf
.pdf
...

预期的输出是:

test1.pdf
test2.pdf
test3.pdf
...

对不起愚蠢的问题但我坚持这个,我想,这个问题很少。

此脚本的输出相同:

#!/bin/bash
while IFS=\; read col1 col2 col3 col4
do
echo "$col4".pdf
done < test.csv

2 个答案:

答案 0 :(得分:1)

不要for i in $(cat something)。它会将整个文件保存在不需要的内存中。它也不适用于列中的空格。

更好地逐行解析,并使用shell工具拆分列(read内置)。

的内容
while IFS=\; read col1 col2 col3 col4
do
    echo "$col4".pdf
done < test.csv

应该这样做。

如果您的列以空格分隔,则可以删除IFS=\;部分。

答案 1 :(得分:0)

试试这个:

#!/bin/bash
while read line
do
        LINE=`echo "$line" | awk -F';' '{print $4}'`
        echo "${LINE}.pdf"
done < test.csv