【问题标题】:Splitting a text file into 2 equal halves将文本文件分成两等份
【发布时间】:2014-04-09 16:12:15
【问题描述】:

我想为每个文件将目录中的所有文本文件分成 2 等份。我尝试了下面的代码,但它不起作用。

d=2
for file in /home/user1/Documents/files/*.txt; do

l=$(wc -l < "$file")    #was l= wc $file | awk {'print $1'}

echo $l

sp=$((l/d))    #was sp = $((l/d))

echo $sp

split -l $sp $file $file.

done

【问题讨论】:

  • 删除分配“split”的行上的空格。还。考虑将变量split 重命名为lines,这样它就不会与命令split 混淆。
  • 另外,考虑一下具有奇数行的文件,以及当你除以 2 时会发生什么 - 你可能需要加 1 以确保你没有得到 3 个“半”:- )
  • 把 split 改成 sp 但除法不起作用。
  • 你删除了 = 后面的空格吗?
  • 请发布您的更新代码,以便我们查看您目前拥有的内容。

标签: linux bash file split directory


【解决方案1】:

这一行

l= wc $file | awk {'print $1'}

应该是

l=$(wc -l < "$file")

【讨论】:

  • 不,等号两边不应该有空格,最好是l=$(wc -l &lt; "$file")
  • awk 也不需要...因为wc 不会打印文件名,或者如果您按照我的建议调用它,单词和字符也会计数。
  • 但是,l 将包含由wc -l &lt; "$file" 生成的前导空格,这应该不是问题,而只是需要牢记的。
猜你喜欢
  • 2019-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-05
  • 1970-01-01
  • 2012-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多