我想刪除txt文件中除最後一行以外的每一行的逗號,我已經使用grep -Po '.*(?=,$)
和sed -e 's/.$//'
但這會刪除最後一行,因爲它不包含逗號(這是我的理解)。 一個例子:如何從文件的每一行刪除最後一行以外的逗號?
1,
2,
3
using the commands above , the result will be:
1
2
而不是:
1
2
3
我想刪除txt文件中除最後一行以外的每一行的逗號,我已經使用grep -Po '.*(?=,$)
和sed -e 's/.$//'
但這會刪除最後一行,因爲它不包含逗號(這是我的理解)。 一個例子:如何從文件的每一行刪除最後一行以外的逗號?
1,
2,
3
using the commands above , the result will be:
1
2
而不是:
1
2
3
我將使用以下:
sed 's/,$//'
它假設沒有結尾的空白,並從該線的端刪除一個逗號。如果沒有逗號,它會保持未修改的行。
如果有可能是尾隨,你想去掉空格,下面應該與GNU工作的sed:
:sed -r 's/,\s*$//'
如果您需要的便攜性,下面應該任何POSIX兼容的系統上工作
sed 's/,[[:space:]]*$//'
你grep
命令沒有工作,因爲它明確地匹配的數據後跟一個逗號和線的末端,所以沒有逗號線分別爲不匹配。
你可以有固定的,通過匹配數據,接着或者由逗號和線的末端,或者直接行的末尾:
grep -Po '.*(?=,?$)
我傾向於不喜歡使用lookarounds時的簡單實現可能,所以我會避免這個解決方案,但那可能就是我。
你sed
命令沒有的另一個原因是工作:它刪除行的最後一個字符,不管這個角色了。因此,舉個例子,在第三行中,字符爲3
,當刪除時,該行空了。
試試這個。將最後一行替換爲最後一行($)以外的所有行。
sed '$ ! s/,$//'
命令tr -d [:punct:] < file.txt
中刪除所有的標點字符file.txt的
'sed中的/,$ //''? – 123