使用foreach和awk命令将csh脚本转换为bash脚本

时间:2016-12-20 02:49:37

标签: linux bash awk

使用csh脚本:

#!/bin/csh
foreach xmlfile ( "`cat ~/reportlist.txt`" )
printf $xmlfile"|"
head -c 1000 $xmlfile | awk -F'[="]' '{print $15,"|",$21}'
end

逐行读取文本文件并导航到每个文件,并使用awk从每个文件打印所需的变量。

我需要在bash脚本中执行相同的操作。我是bash的新手。我怎么能用bash做到这一点?

2 个答案:

答案 0 :(得分:2)

更正确的方法(参见Bash FAQ 001)是

while IFS= read -r xmlfile; do
    printf '%s' "$xmlfile"
    head -c 1000 "$xmlfile" | awk -F'[="]' '{print $15,"|",$21}'
done < ~/reportlist.txt

使用awk以这种方式解析XML是脆弱的,不推荐使用。但是,如果没有看到有问题的XML,我就不能推荐更好的解决方案。

答案 1 :(得分:0)

这有效:

set +x
for xmlfile in `cat reportlist.txt`
do
printf $xmlfile"|"
head -c 1000 $xmlfile | awk -F'[="]' '{print $15,"|",$21}'
done