11 仅打印字符串的后3个字符的命令 我知道该cut命令可以打印n字符串的第一个字符,但是如何选择最后一个n字符? 如果我的字符串中的字符数可变,那么如何仅显示字符串的后三个字符。例如。 所需的“无限”输出为“ ted” 所需的“ 987654”输出为“ 654” 所需的“ 123456789”输出为“ 789” 30 text-processing cut
7 如何在长行中每四个字符插入一个空格? 我有一排很长的行,我想在一行单独的纯文本行上每4个字符插入一个空格,以使其更易于阅读,最简单的方法是什么?我也应该能够从管道输入线。例如 echo "foobarbazblargblurg" | <some command here> 给 foob arba zbla rgbl urg 30 command-line shell text-processing
2 根据一列中的重复项删除行,而不进行排序 我有3列大文件(〜10,000行),当该行第三列的内容出现在另一行的第三列中时,我想删除这些行。文件的大小有点麻烦,我不能使用下面的代码,因为整行不完全相同。只是第3列的内容。 awk '!seen[$0]++' filename 30 text-processing awk
5 如何在命令行上打印的行之间添加换行符? 邮件日志很难阅读。如何在命令行上打印的每一行之间输出空白行?例如,假设我正在记录日志。这样,就不会混淆多个换行。 30 text-processing command-line logs output text-formatting
6 如何删除短于XY的行? 我发现了一个有关如何删除行数超过2048个字符的问题: 如果长度超过XY,如何删除行? 问:但是如何删除少于4个字符的行?因此,删除文件中长度为1或2或3的行。 更新:感谢您提供许多好的答案,但我只能将其中一个标记为“好” 29 text-processing sed
4 BASH基本从十进制转换为十六进制 在Bash中,如何将基数从十进制转换为另一基数,尤其是十六进制。似乎很容易走另一条路: $ echo $((16#55)) 85 通过网络搜索,我发现了一个脚本,该脚本可以进行数学和字符操作来进行转换,并且可以将其用作函数,但是我以为bash已经具有内置的基本转换-可以? 29 bash shell text-processing hex
3 使用sed为solaris上的命令的输出着色 我有一个必须在linux和solaris上都可以使用的ksh脚本。我正在尝试为特定命令的输出着色。它可以在Linux(特别是RHEL6)上运行,但不能在solaris(SunOS 5.10)上运行。 在Linux上的命令(输出“测试”正确地显示为红色): [amartin@linuxbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,' test 关于solaris的命令(输出“ test”未着色): [amartin@sunbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,' x1B[31mtestx1B[0m 有没有办法制作此命令,使输出为红色,而输出中没有原始代码?我不能更改'echo'命令,因为这只是我实际运行的命令的填充。 29 shell-script text-processing sed ksh colors
4 如何使用gnu texttools连续执行'wc -l'? 我当然知道 cat logfile.txt | wc -l 120 会告诉我文件中的行数。 鉴于 tail -f logfile.txt 将向我展示另一个程序写入的新行logfile.txt。 是否可以将两者结合在一起,以便我可以使用标准文本实用程序连续更新logfile.txt的行数? 我知道 watch wc -l logfile.txt 但是我不想每次都重新计算整个文件,这似乎是浪费。一个人可能需要每秒钟左右追加一次计数,可能\r需要\n在行尾添加一个,而不是一个。 28 bash shell text-processing logs tail
5 使用sed(或awk)删除图案上方的行范围 我有以下代码,该代码将删除带有模式的banana行及其后的两行: sed '/banana/I,+2 d' file 到目前为止,一切都很好!但我需要它来除去2行之前 banana,但我不能用“减号”或任何(类似于得到它grep -v -B2 banana file应该做的,但没有): teresaejunior@localhost ~ > LC_ALL=C sed '-2,/banana/I d' file sed: invalid option -- '2' teresaejunior@localhost ~ > LC_ALL=C sed '/banana/I,-2 d' file sed: -e expression #1, char 16: unexpected `,' teresaejunior@localhost ~ > LC_ALL=C sed '/banana/I,2- d' file sed: -e … 28 shell-script text-processing sed awk
11 是否必须有更好的方法来仅替换单个换行符? 我习惯每句只写一行,因为我通常将内容编译为LaTex,或者以其他格式书写而忽略了换行符。我使用空白行指示新段落的开始。 现在,我有一个以这种风格编写的文件,我想将其作为纯文本发送。我想删除所有单个换行符,但完整保留两个换行符。这是我所做的: sed 's/$^/NEWLINE/' file.txt | awk '{printf "%s ",$0}' | sed 's/NEWLINE/\n\n/g' > linebreakfile.txt 这用一些我相信不会出现在文件中的文本替换空行:NEWLINE然后用awk消除了所有换行符(我在某些网站上发现了这个技巧),然后NEWLINE用必需的两个换行符替换了s 。 这似乎是完成一件非常简单的事情的漫长方法。有没有更简单的方法?另外,如果有一种方法可以用单个空格替换多个空格(有时由于某种原因有时会蔓延),那也很好。 我使用emacs,所以如果有一些emacs特定的技巧很好,但我宁愿看到一个纯sed或纯awk版本。 27 text-processing sed awk regular-expression
13 将CSV转换为TSV 我有许多大型CSV文件,希望它们采用TSV(制表符分隔格式)。复杂之处在于CSV文件的字段中有逗号,例如: A,,C,"D,E,F","G",I,"K,L,M",Z 预期产量: A C D,E,F G I K,L,M Z (中间的空格是“硬”标签) 我在此服务器上安装了Perl,Python和coreutils。 27 text-processing python perl csv-simple
3 如何使用bash脚本对与字符串+数字组合的字符串进行排序? 这是我要排序的数据。但是sort将数字视为字符串,数据没有按照我的预期进行排序。 / home / files / profile1 / home / files / profile10 / home / files / profile11 / home / files / profile12 / home / files / profile14 / home / files / profile15 / home / files / profile16 / home / files / profile2 / … 27 bash shell-script text-processing sort