回答
您可以使用可用的一種外部工具的操作,如awk或者sed數據。您可以直接從您的命令行使用此工具或將其包含在您的bash腳本中。
實施例:
$ a="This is a test program that will print
Hello World!
Test programm Finished"
$ sed -E '2s/(.{4})/&\*/' <<<"$a" #Or <file
#Output:
This is a test program that will print
Hell*o World!
Test programm Finished
在上述試驗中,我們進入LINE2的第四炭後一個星號。
如果你想上的文件進行操作並直接對文件的更改,然後使用sed -E -i '....'
相同的結果:
awk 'BEGIN{OFS=FS=""}NR==2{sub(/./,"&*",$4)}1' <<<"$a"
在純bash,那麼你可以達到以上輸出像這樣:
while read -r line;do
let ++c
[[ $c == 2 ]] && printf '%s*%s\n' "${line:0:4}" "${line:4}" || printf '%s\n' "${line}"
# alternative:
# [[ $c == 2 ]] && echo "${line:0:4}*${line:4}" || echo "${line}"
done <<<"$a"
#Alternative for file read:
# done <file >newfile
如果你的變量只是一行,你不需要循環。你可以直接這樣做:
printf '%s*%s\n' "${a:0:4}" "${a:4}"
# Or even
printf '%s\n' "${a:0:4}*${a:4}" #or echo "${a:0:4}*${a:4}"
@DCuser歡迎。我將嘗試包括一個純粹的bash解決方案。 –
@DCuser添加了純粹的bash解決方案。 –
但這種方法只是打印修改後的行,它並不能代替包含該行的文件的內容......對嗎? – DCuser
我建議使用sed
。如果你想在第5欄處插入2號線星號:
sed -r "2s/^(.{5})(.*)$/\1*\2/" myfile.txt
2s
說你要一,二號線進行替換。 ^(.{5})(.*)$
表示您從行首開始取5個字符,並且後面有所有字符。 \1*\2
表示您從第一個匹配(即5個開始字符)開始構建字符串,然後是*
,然後是第二個匹配(即字符直到行尾)。
如果你的行和列是變量,你可以做這樣的事情:
_line=5
_column=2
sed -r "${_line}s/^(.{${_column}})(.*)$/\1*\2/" myfile.txt
- 1. 如何在csv行的特定位置插入字符
- 2. BASH:插入文本在特定位置
- 3. 插入在特定位置R中字符串的字符
- 4. 在SQL的特定位置插入字符中的特定位置
- 5. 在特定位置在JTextArea中插入字符串
- 6. iOS - 字符串 - 在特定位置插入字符串
- 7. 在字符串中的特定位置插入空格
- 8. iOS - 如何在字符串內的特定位置插入字符?
- 9. 插入在特定位置上的字符使用sed的
- 10. 如何在字符串(Python 2.7)中的特定位置插入空格?
- 11. 在Bash中打印位置和字符
- 12. jQuery的插入字符在特定位置
- 13. Salesforce - 在特定位置插入字符的驗證規則
- 14. 在文件的特定位置插入字符
- 15. 在字符數組中的特定位置插入一個字符
- 16. 如何在ArrayList中的特定位置插入對象
- 17. 在腳本的特定字符後如何插入新行
- 18. 如何在bash中插入返回的脫字號和新行?
- 19. 在字符串中插入特定長度的特殊字符
- 20. 在MySQL中的特定位置插入新行
- 21. 在SQLite數據庫中的特定位置插入一行
- 22. 使用.net在txt中的特定位置插入一行
- 23. 在特定位置插入XML節點
- 24. 在特定位置插入列表
- 25. 在特定位置插入元素
- 26. 使用VBScript在特定位置插入「 - 」
- 27. 在特定位置插入文本
- 28. 如何在Vim的特定列上的所有行上插入特定字符?
- 29. AWK-插入行與特定位置
- 30. 如何在'JTextField'中插入'String'到特定位置?
你可以使用字符串:https://stackoverflow.com/documentation/bash/502/shell-parameter-expansion/ 1654 /子串和子排列#t = 201704131226548345467 – Sundeep
是的,有可能 – Kent
使用子串只適用於一行,對吧?如何在我的測試文件中更改(添加字符)特定行? – DCuser