und*_*har 21 string bash shell truncation string-length
您将如何删除x个字符之后的所有内容?例如,删除 15 个字符之后的所有内容并添加...到其中。
This is an example sentence应该变成This is an exam...
Léa*_*ris 28
GnuToolshead可以使用字符而不是行:
head -c 15 <<<\'This is an example sentence\'\nRun Code Online (Sandbox Code Playgroud)\n尽管考虑到head -c只处理字节,所以这与 UTF-8 变音等多字节字符不兼容\xc3\xbc。
Bash 内置字符串索引的工作原理:
\nstr=\'This is an example sentence\'\necho "${str:0:15}"\nRun Code Online (Sandbox Code Playgroud)\n输出:
\nThis is an exam\nRun Code Online (Sandbox Code Playgroud)\n最后是一些可以与 ksh、dash、zsh\xe2\x80\xa6 一起使用的东西:
\nprintf \'%.15s\\n\' \'This is an example sentence\'\nRun Code Online (Sandbox Code Playgroud)\n甚至以编程方式:
\nn=15\nprintf \'%.*s\\n\' $n \'This is an example sentence\'\nRun Code Online (Sandbox Code Playgroud)\n如果您使用的是 Bash,则可以直接将 的输出分配printf给变量并使用以下命令保存子 shell 调用:
trim_length=15\nfull_string=\'This is an example sentence\'\nprintf -v trimmed_string \'%.*s\' $trim_length "$full_string"\nRun Code Online (Sandbox Code Playgroud)\n
Boh*_*ian 11
使用sed:
echo 'some long string value' | sed 's/\(.\{15\}\).*/\1.../'
Run Code Online (Sandbox Code Playgroud)
输出:
some long strin...
Run Code Online (Sandbox Code Playgroud)
该解决方案的优点是短字符串不会...添加尾部:
echo 'short string' | sed 's/\(.\{15\}\).*/\1.../'
Run Code Online (Sandbox Code Playgroud)
输出:
short string
Run Code Online (Sandbox Code Playgroud)
因此,它是适用于所有尺寸输出的一种解决方案。
小智 8
使用cut:
echo "This is an example sentence" | cut -c1-15
This is an exam
Run Code Online (Sandbox Code Playgroud)
这包括字符(处理多字节字符)1-15,参见cut(1)
-b, --bytes=LIST
select only these bytes
-c, --characters=LIST
select only these characters
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25326 次 |
| 最近记录: |