用星号解析bash文件

时间:2015-08-20 16:10:52

标签: linux bash shell

使用脚本将cobol部分转换为pl / sql,我正在努力将cobol注释转换为Oracle注释。

线条看起来像

if userdata.empty?
  raise "Errors: userdata not available"
else
  node.override[:user1] = userdata['user1']
  node.override[:user2] = userdata['user2']
  node.save
end

所以计划是解析文件中的每一行,如果第一个字符是星号,则添加一个双短划线 - 到行的开头。然而,星号是一个特殊的角色,我似乎无法得到bash来处理它。

想法?

编辑。 cobol的示例部分。

******************

带星号的那些行需要成为

************************
IDENTIFICATION DIVISION.
************************

PROGRAM-ID.

我用各种迭代替换了$ firstChar,但结果是“找不到命令”,因为bash仍在将星号作为命令而不是字符串字符读取。

--**********************
IDENTIFICATION DIVISION.
--**********************

2 个答案:

答案 0 :(得分:1)

您必须使用[{ "ASIN": ["B00WA6ZL8S"], "ParentASIN": ["B00WA6ZL8S"], "VariationSummary": [{ "LowestPrice": [{ "Amount": ["9200"],"CurrencyCode": ["USD"], "FormattedPrice": ["$92.00"] }], "HighestPrice": [{ "Amount": ["13995"], "CurrencyCode": ["USD"], "FormattedPrice": ["$139.95"] }] }], "Variations": [{ "TotalVariations": ["48"], "TotalVariationPages": ["1"], "VariationDimensions": [{ "VariationDimension": ["Size", "Color"] }], "Item": [{ "ASIN": ["B00RHLICFA"], "ParentASIN": ["B00WA6ZL8S"], "SmallImage": [{ "URL": ["http://ecx.images-amazon.com/images/I/41z-SPDeICL._SL75_.jpg"], "Height": [{ "_": "35", "$": { "Units": "pixels" } }], "Width": [{ "_": "75", "$": { "Units": "pixels" } }] }],

转义角色
make_sure_path_exists

第二个*是通配符,因此它会检查该行是否以星号开头。

编辑:如果您只是比较第一个字符,则可以删除第二个\,该字符用于表示字符串的其余部分。

if [[ $line == \** ]]
 then
   echo "-- whatever"
 fi

答案 1 :(得分:0)

使用sed

sed 's/^*/--*/g'

*开头替换--*。有趣的是,即使第一个搜索的*未被转义,这仍然有效。此外,g是不必要的,因为由于^,每行只有一个可能的匹配项。如下所述,正确的语法应为

sed 's/^\*/--*/'