如果在wc -l输出周围的else语句中如何创建相同的行

时间:2018-03-25 22:13:28

标签: bash tcsh

我对tcsh一点都不熟悉,所以真的希望有人可以放弃我在这里失踪的知识。我正在尝试构建一个单独的if else语句来检查文件中的行数,如果行数>则输出触摸文件。 1.我检查行是否大于1,因为只能使用标题信息生成文件。 (另外,如果有人有任何有用的在线指南,我可以用于所有事情tcsh,这也将是非常有帮助的)

示例文件1(有数据):

TITLE1,TITLE2 DATA1,DATA2

示例文件2(空):

TITLE1,TITLE2

预期输出:

如果文件有数据,则生成has_data.txt,否则不生成文件

我尝试过的事情:

wc -l dummy_file_empty.txt> 1&& touch has_data.txt - 并不真正评估大于

更新``用于评估行中的语句,$ output是一个数组?因此需要引用索引1来获取行数

set output =`wc -l dummy_file_empty.txt` | if($ output [1]> 1)touch has_data.txt - 返回表达式语法错误

if(wc -l dummy_file_empty.txt)> 10 touch has_data.txt - 返回表达式语法错误

如果bash中存在解决方案,我也可以调用bash shell(看到bash在语句结束时使用管道传输并测试它以确保它在我的机器上运行的示例)

2 个答案:

答案 0 :(得分:1)

[[ $(cat file.txt | wc -l) -gt 1 ]] && touch has_data.txt

使用>时,会尝试写入文件。在这种情况下,文件名为110。您想使用代表大于的-gt

如果你在tcsh终端中运行它,那么你可以通过bash调用它:

bash -c '[[ $(cat file.txt | wc -l) -gt 1 ]] && touch has_data.txt'

答案 1 :(得分:0)

只是想添加一个我已经有点接近的解决方案......但是我真的无法处理文件可能不存在的情况。希望有人能指导这是否是一个好方法。

set output =`wc -l file.txt`&& if($ output [1]> 1)触摸has_data.txt