我需要从输出文件中复制前 5 个字符(总共 25 行),然后将该输出复制到文件中。删除输出中的空白或空条目也可能会很好。
答案1
head
在这里可能有用:
-c, --bytes=[-]K
print the first K bytes of each file; with the leading '-', print all but the last K bytes of each file
答案2
cut -c5
剪切输入中每行的前 5 个字符。如果要将行数限制为 25,请使用head -n25
:
cut -c5 file | head -n25
答案3
您可以使用以下sed
命令:
sed \
-e 's/\(^\w\{5\}\).*/\1/' \
-e '26,$d' \
-e '/^$/d' \
input_file > output_file
第一部分匹配行开头的五个字符,打印它们并丢弃其余的。第二部分确保仅打印前 25 行。最后一部分删除空行。
答案4
cat inputfile | head -c 5 > outputfile
这应该将输出重定向到文件。
如果您希望删除空格,请过滤文件的内容,即在提取前五个字符之前删除空格。
cat inputfile | tr -d ' ' | head -c 5 > outputfile
您也可以使用以下格式来tr
达到相同的效果。
cat inputfile | tr -d [:space:] | head -c 5 > outputfile
tr -d [:space:]
删除已通过管道传输到此命令的文本中的所有空格。
如果您只想截断文件的前 5 个字符,请坚持上述解决方案。
现在,如果您希望对文件的每一行执行此操作,请按照以下步骤操作:
cat inputfile | sed -e 's/ //g' | awk '{print substr($0,0,5)}' > outputfile
或者
sed -e 's/ //g' < inputfile | awk '{print substr($0,0,5)}' > outputfile
说明:sed -e 's/ //g'
删除所有空格并awk '{print substr($0,0,5)}'
打印每行的前 5 个字符。