我有2个txt文件:file1和file2 我想用file1的第一行替换file2的第一行,并使用 bash 命令
文件1:
try
{
string strText = string.Empty;
var path = HttpContext.Current.Server.MapPath("~/attached/MAWB/711/114d1.pdf");
PdfReader reader = new PdfReader(new Uri(path));
for (int page = 1; page <= reader.NumberOfPages; page++)
{
ITextExtractionStrategy its = new iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy();
String s = PdfTextExtractor.GetTextFromPage(reader, page, its);
s = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(s)));
strText = strText + s;
}
reader.Close();
return Ok(strText);
}
catch (Exception ex)
{
while (ex.InnerException != null)
ex = ex.InnerException;
return BadRequest(ex.Message);
}
file2的:
aaaaaaaa
bbbbbbbb
cccccccc
file2的预期结果:
zzzzzzzz
yyyyyyyy
wwwwwwww
这不能用 sed 完成,因为你不知道要用什么代替......我对吗?那怎么办呢?
修改
所以在我的特定情况下(我在我的openwrt路由器中这样做),有效的是:
aaaaaaaa
yyyyyyyy
wwwwwwww
感谢@Sundeed提供的链接,解释了为什么有些命令只在shell中显示结果而不是在文件中写入:https://mywiki.wooledge.org/BashPitfalls#cat_file_.7C_sed_s.2Ffoo.2Fbar.2F_.3E_file
答案 0 :(得分:4)
只需使用head
和tail
执行此任务:
head -n 1 Input_file1 && tail -n 2 Input_file2
输出如下:
aaaaaaaa
yyyyyyyy
wwwwwwww
答案 1 :(得分:1)
您当然可以使用sed
执行此操作,但为什么会这样做?
sed "1c\\
$(sed 1q file1)
" file2
答案 2 :(得分:1)
或使用ed
f1="file1";f2="file2";printf "%s\n" '2,$d' "r $f2" '2d' "wq $f2" | ed -s "$f1"