假设我有一个字符串“123456789”。
我想提取第 3 个、第 6 个和第 8 个元素。我想我可以用
cut -3, -6, -8
但如果这给
368
假设我想用空格将它们分开以获得
3 6 8
我该怎么办?
最佳答案
实际上,shell 参数扩展允许您直接进行子字符串切片,因此您可以这样做:
x='123456789'
echo "${x:3:1}" "${x:6:1}" "${x:8:1}"
更新
要对整个文件执行此操作,请循环读取该行:
while read x; do
echo "${x:3:1}" "${x:6:1}" "${x:8:1}"
done < file
(顺便说一下,bash 切片是零索引的,所以如果你想要数字 '3'、'6' 和 '8',你真的需要
${x:2:1} ${x:5:1} and {$x:7:1}
。)
关于regex - UNIX 中的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19171993/