考虑以下命令:
watch -d "ps -ef | grep java"
Run Code Online (Sandbox Code Playgroud)
它提供以下输出:
kshitiz 11369 11285 0 Oct13 ? 00:06:02 /usr/lib/jvm/jdk1.7.0_40/jre/bin/java -Djava.awt.headless=true -Didea.version==14.1.2 -Xmx512m -Dfile.e
Run Code Online (Sandbox Code Playgroud)
超出的输出-Dfile.e
被截断或流出屏幕。如何滚动查看输出或自动换行?
我想创建一个多行文本的表格显示,类似于以下内容:
all Build all targets
document Create documentation of source files in the subfolders
`src` and `script`, and write it to `man`
test Run unit tests
Run Code Online (Sandbox Code Playgroud)
目前,我对此的输入如下所示,但这当然可以更改:
all---Build all targets
document---Create documentation of source files in the subfolders `src` and `script`, and write it to `man`
test---Run unit tests
Run Code Online (Sandbox Code Playgroud)
我已经尝试通过awk
和wrap
/的组合来实现这一点,pr
但是虽然换行有效,但缩进却没有。这是我目前的方法:
…
| awk -F '---' "{ printf '%-10s %s\n', $1, $2 }" \
| fold -w $(($COLUMNS - 1)) -s
Run Code Online (Sandbox Code Playgroud)
它生成输出
all Build …
Run Code Online (Sandbox Code Playgroud) 我正在使用fold -w 3
将一行拆分为多个 3 个字符长,但是对于 GNU 实现,它似乎不适用于具有多字节字符的文本。
我怎样才能实现上述目标sed
?
我想出了sed -r 's/^(.{0,3})(.*)/\1\n\2/g'
但是这只会做一个替换:
echo "111222333444555666" | sed -r 's/^(.{0,3})(.*)/\1\n\2/g'
111
222333444555666
Run Code Online (Sandbox Code Playgroud)
附加示例:
echo "???????????????????????" | sed -r 's/^(.{0,3})(.*)/\1\n\2/g'
???
????????????????????
Run Code Online (Sandbox Code Playgroud)
并且fold
它的破坏行为:
echo "???????????????????????" | fold -w 3
??
??
??
??
??
Run Code Online (Sandbox Code Playgroud) 所以我有这个 fasta(生物学)文件,看起来像这样:
>m64093_191209_130050/133911/ccs_64
TTCAGGCTGTGTTCCATTTGATTTAAAATCAAATAATTTCATTCGCGTCAGAACACCTGGTTTCACGACC
ATAAATAATTTACCAGTGAATCGAGGCTCAATTATAGATCCTCGGACGCGAGTTCTCGGTTGACGAGTGG
GATTCGAATTATTTTTCACCGAAAATTTTAGTCGACGAGTTCAGATAAATTTGTTCGGGATAAAATCATC
TGAGTAGGTCGGGCTTCTGAATTTCGTATTCTTGCGAGCAATGAATTTTAAATAATCATCGGACATACCA
ATTTTTGGAACAATAATGTTCCGAACATCCCGAAAATATAGGAAGAGCCCGGATAGATAAAAATAAACAC
Run Code Online (Sandbox Code Playgroud)
每行最多 70 个字符长。通常,如果我想将其格式化为最多 50 个字符长,我使用:
fold -50 input.fasta > output.fasta # 也试过 -b 和 -w args
但不知何故,这是行不通的。该文件看起来与我见过的许多其他文件完全相同。输出现在看起来像这样:
>m64093_191209_130050/133911/ccs_64
TTCAGGCTGTGTTCCATTTGATTTAAAATCAAATAATTTCATTCGCGTCA
GAACACCTGGTTTCACGACC
ATAAATAATTTACCAGTGAATCGAGGCTCAATTATAGATCCTCGGACGCG
AGTTCTCGGTTGACGAGTGG
GATTCGAATTATTTTTCACCGAAAATTTTAGTCGACGAGTTCAGATAAAT
TTGTTCGGGATAAAATCATC
TGAGTAGGTCGGGCTTCTGAATTTCGTATTCTTGCGAGCAATGAATTTTA
AATAATCATCGGACATACCA
ATTTTTGGAACAATAATGTTCCGAACATCCCGAAAATATAGGAAGAGCCC
Run Code Online (Sandbox Code Playgroud)
它剪切了悬垂的 20 个字符并正确地将它们放置在下面,但是它没有加入下一行并将其剪切到最多 50 个字符上。
我回到了我之前创建的 fasta 文件,fold 命令仍然正常工作。如果我复制新文件的一段并将其传递到另一个文件中,问题仍然存在。
我认为可能存在我不知道的编码问题。任何人都可以帮忙吗?
干杯,
编辑:很好的答案,谢谢!!