質問:テキストファイルの各行の最後にいくつかの単語を追加する必要があります。誰もこの仕事をすることができるLinuxのbashシェルスクリプトを知っていますか?ありがとう!シェルスクリプト各行に接尾辞を付け加える
例:各行の末尾に単語done
を追加します。
line1 abcdefg done
line2 abcdefg done
line3 abcdeft done
質問:テキストファイルの各行の最後にいくつかの単語を追加する必要があります。誰もこの仕事をすることができるLinuxのbashシェルスクリプトを知っていますか?ありがとう!シェルスクリプト各行に接尾辞を付け加える
例:各行の末尾に単語done
を追加します。
line1 abcdefg done
line2 abcdefg done
line3 abcdeft done
使用のawk:
awk 'NF{print $0 " done"}' inFile
またはインラインフラグでsedを:
sed -i.bak '!/[^[:blank:]]/s/$/ done/' inFile
を私はvimを読みました? script.vim
の
内容:
set backup
g/^/ normal A done
normal ZZ
実行して、それが好き:
vim -S script.vim infile
それは~
接尾辞を使用してバックアップを作成するインプレースファイルを変更します。
あなたが行うことができ、純粋なbashでこれを実行したい場合:
append.sh
のような呼び出すことができると呼ばれるならば、
#!/bin/bash
INFILE=$1
TMPFILE=/tmp/$INFILE.$$
while IFS= read -r; do
echo "$REPLY done";
done <$INFILE >$TMPFILE ;
mv $TMPFILE $INFILE;
:
bash append.sh file.txt
が1_CRのコメントどおりを編集しました。
は、タスクのこれらの種類のなかれ便利ですと同じ、
# cat append.txt
line1 abcdefg
line2 abcdefg
line3 abcdeft
# sed -i 's/$/done/g' append.txt
# cat append.txt
line1 abcdefg done
line2 abcdefg done
line3 abcdeft done
または
あなたは、以下のスクリプトを使用することができます。Bing.Physics @
# cat sedcheck.sh
#!/bin/bash
if [ $# -eq 0 ]
then
echo "No input supplied"
else
sed -i 's/$/ '$1'/g' $2
fi
# cat append.txt
line1 abcdefg donedin
line2 abcdefg donedin
line3 abcdeft donedin
# ./sedcheck.sh testing append.txt
# cat append.txt
line1 abcdefg donedin testing
line2 abcdefg donedin testing
line3 abcdeft donedin testing
を:あなたのためのこの仕事をしましたか? – anubhava
解決策の問題は、ファイルの最後に 'done'を追加した行を追加します。これは必要ありません。 –
私の編集した答えを確認してください。 – anubhava